如何使用Pandas将多行DataFrame与单行DataFrame合并为目标DataFrame
合并多行DataFrame与单行DataFrame生成目标DataFrame
需求说明
现有两个DataFrame:
df:包含多行学生的数学、英语成绩数据df1:包含单行的地理、环境、物理、生物成绩数据
需要将df1的所有列内容重复追加到df的每一行,得到包含所有科目成绩的目标DataFramedf2。
原始数据代码
多行DataFrame df
import pandas as pd data = [[20, 10], [100, 15], [95, 14]] df = pd.DataFrame(data, columns=['Math', 'Eng'])
单行DataFrame df1
data1 = [[20, 10, 25, 40]] df1 = pd.DataFrame(data1, columns=['Geo', 'Env', 'Phy', 'Bio'])
解决方案
方法一:利用pandas广播特性直接赋值
pandas会自动将单行数据广播匹配到多行,直接把df1的列赋值给df即可:
df2 = df.copy() # 将df1的所有列添加到df2中 df2[df1.columns] = df1.values
方法二:使用concat结合repeat扩展单行数据
先将df1扩展为与df行数相同的DataFrame,再与df横向拼接:
# 扩展df1的行数与df一致 df1_expanded = df1.loc[df1.index.repeat(len(df))].reset_index(drop=True) # 横向拼接两个DataFrame df2 = pd.concat([df, df1_expanded], axis=1)
验证结果
运行上述代码后,df2的结构与数据如下:
print(df2) # 输出结果: Math Eng Geo Env Phy Bio 0 20 10 20 10 25 40 1 100 15 20 10 25 40 2 95 14 20 10 25 40
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

