如何将无交集列的另一DataFrame的列添加到目标DataFrame并填充相同数据
当然可以实现啦!这在Pandas里是非常常见的操作,我给你分享几种简单易上手的方法,都能轻松得到你想要的结果:
方法1:直接列赋值
最直观的方式就是把第二个DataFrame里的列值提取出来,直接赋值给第一个DataFrame的新列。因为第二个DataFrame只有一行,提取出的是单个值,Pandas会自动帮你把这个值广播填充到目标DataFrame的所有行里。
示例代码:
import pandas as pd # 先构建你给出的两个DataFrame df1 = pd.DataFrame({'A': [1, 1, 1, 1], 'B': [2, 2, 2, 2]}) df2 = pd.DataFrame({'C': [3], 'D': [4]}) # 直接给df1添加新列并赋值 df1['C'] = df2['C'].iloc[0] df1['D'] = df2['D'].iloc[0] print(df1)
运行后就能得到你想要的结果啦。
方法2:使用assign()方法批量添加列
如果要添加的列比较多,用assign()方法会更简洁,它可以一次性给DataFrame添加多个新列:
import pandas as pd df1 = pd.DataFrame({'A': [1, 1, 1, 1], 'B': [2, 2, 2, 2]}) df2 = pd.DataFrame({'C': [3], 'D': [4]}) # 把df2的单行数据转换成键值对,批量添加到df1中 df_result = df1.assign(**df2.iloc[0]) print(df_result)
这里**df2.iloc[0]会把单行的Series转换成C=3, D=4这样的键值对,assign()会自动把这些键作为新列名,对应的值填充到所有行。
方法3:拼接重复后的DataFrame
如果你想保留两个DataFrame的原始结构,也可以先把第二个DataFrame重复成和第一个一样的行数,再按列拼接:
import pandas as pd df1 = pd.DataFrame({'A': [1, 1, 1, 1], 'B': [2, 2, 2, 2]}) df2 = pd.DataFrame({'C': [3], 'D': [4]}) # 把df2重复len(df1)次,重置索引后和df1拼接 df2_repeated = df2.loc[df2.index.repeat(len(df1))].reset_index(drop=True) df_result = pd.concat([df1, df2_repeated], axis=1) print(df_result)
这种方法的思路是让两个DataFrame行数一致,再横向拼接,同样能得到目标结果。
内容的提问来源于stack exchange,提问作者Agus
相关产品推荐
相关产品推荐

