问题描述
具有两个数据帧:
df1 = pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
a b
0 1 4
1 2 5
2 3 6
df2 = pd.DataFrame({'c':[7],'d':[8]})
c d
0 7 8
目标是将所有df2
列值添加到df1
,重复并创建以下结果。假定两个数据框都不共享任何列名。
a b c d
0 1 4 7 8
1 2 5 7 8
2 3 6 7 8
解决方法
如果存在字符串列,则可以将DataFrame.assign
与解包Series
一起使用,该解压缩是通过选择df2
的第一行来创建的:
df = df1.assign(**df2.iloc[0])
print (df)
a b c d
0 1 4 7 8
1 2 5 7 8
2 3 6 7 8
另一个想法是将df1.index
与DataFrame.reindex
重复并使用DataFrame.join
(此处df2
的第一个索引值与df1.index
的第一个索引值相同):
df = df1.join(df2.reindex(df1.index,method='ffill'))
print (df)
a b c d
0 1 4 7 8
1 2 5 7 8
2 3 6 7 8
如果可能在原始df
中没有缺失值,请在最后一步中使用正向填充缺失值,但是将类型更改为浮点数,谢谢@Dishin H Goyan:
df = df1.join(df2).ffill()
print (df)
a b c d
0 1 4 7.0 8.0
1 2 5 7.0 8.0
2 3 6 7.0 8.0