如何从.txt文件创建数据帧,并在行中混合标题,而无需迭代?

问题描述 投票:1回答:1

对不起,标题有点混乱,但是问题出在下面:

说我有一个看起来像这样的.txt文件,

Bob Sales
12
33
45
Sam Sales
23
Wendy Sales
12
33
45
64
54

而且我希望我的数据框成为,

Bob    12
Bob    33
Bob    45
Sam    23
Wendy  12
Wendy  33
Wendy  45
Wendy  64
Wendy  54

导入.txt文件以创建熊猫数据框而不逐行迭代的最佳方法是什么? (我知道迭代可以轻松解决此问题,但我很好奇是否有可能不进行迭代)。

python pandas
1个回答
3
投票

IIUC:

from io import StringIO
txt = StringIO("""Bob Sales
12
33
45
Sam Sales
23
Wendy Sales
12
33
45
64
54""")

df = pd.read_csv(txt, header=None, sep='\s\s+', engine='python')

df[1] = df[0].str.extract('([a-zA-Z ]+)').ffill()
df_out = df[df[0] != df[1]]
print(df_out)

输出:

     0            1
1   12    Bob Sales
2   33    Bob Sales
3   45    Bob Sales
5   23    Sam Sales
7   12  Wendy Sales
8   33  Wendy Sales
9   45  Wendy Sales
10  64  Wendy Sales
11  54  Wendy Sales

Details:使用正则表达式查找模式,创建一个仅包含具有该模式的行的新列,使用ffill将先前的值向下复制到该新列中。接下来,过滤原始列与新列不相等的数据框。

© www.soinside.com 2019 - 2024. All rights reserved.