对不起,标题有点混乱,但是问题出在下面:
说我有一个看起来像这样的.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文件以创建熊猫数据框而不逐行迭代的最佳方法是什么? (我知道迭代可以轻松解决此问题,但我很好奇是否有可能不进行迭代)。
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将先前的值向下复制到该新列中。接下来,过滤原始列与新列不相等的数据框。