将一个数据帧重复的所有列值添加到其他熊猫中

问题描述

具有两个数据帧:

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.indexDataFrame.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