我正在尝试选择一行数据,将其与另一个数据帧合并,然后选择下一行,执行相同的操作。我相信我应该能够用pandas.iterrows做到这一点。
import pandas as pd
import numpy as np
one = {'A' : pd.Series([3, 4, 2]), 'B' : pd.Series(['one', 'two', 'one'])}
two = {'A' : pd.Series([1, 2, 3, 4, 5, 6])}
df1 = pd.DataFrame(one, columns = ['A', 'B'])
df2 = pd.DataFrame(two)
for index, row in df1.iterrows():
row1 = pd.DataFrame(row)
print(row1)
df3 = pd.merge(df2, row1, on = 'A', how = 'left')
print (df3)
当我打印(第1行)时,我得到:
0
A 3
B one
1
A 4
B two
2
A 2
B one
由于键错误导致连接失败,考虑到print(row1)的结构,这对我来说很有意义。
df3的预期结果是:
A B
0 1 Nan
1 2 Nan
2 3 one
3 4 Nan
4 5 Nan
5 6 Nan
A B
0 1 Nan
1 2 Nan
2 3 Nan
3 4 two
4 5 Nan
5 6 Nan
在我看来,列标签现在是索引。我想我需要重置索引,因此'A'和'B'将是我可以加入的值。有没有一种有效的方法来实现这一目标?
答案 0 :(得分:1)
您可以尝试添加T
:
row1 = pd.DataFrame(row)
到
row1 = pd.DataFrame(row).T
A B
0 1 NaN
1 2 NaN
2 3 one
3 4 NaN
4 5 NaN
5 6 NaN
A B
0 1 NaN
1 2 NaN
2 3 NaN
3 4 two
4 5 NaN
5 6 NaN
A B
0 1 NaN
1 2 one
2 3 NaN
3 4 NaN
4 5 NaN
5 6 NaN