python - 将两个数据帧与新索引号合并

标签 python pandas concatenation

如何将两个 pandas 数据帧与另一个数据帧添加在一起,并添加索引更改,如以下示例所示。 df1:

     A    B    C    D
1    1    2    3    2
2    2    2    3    1
3    2    3    2    1

df2:

     A    B    C    D
1    1    2    3    2
2    4    2    19   1
3    2    64   2    1

结果应该是

df_sum:

     A    B    C    D    A_2    B_2    C_2    D_2
1    1    2    3    2    1       2       3     2
2    4    2    19   1    4       2       19    1
2    2    2    3    1    2      64       2     1

然后添加 4 列,d_A = A_2-A; d_B = B_2-B; d_C = C_2-C; d_D = D_2-D:

     A    B    C    D    A_2    B_2    C_2    D_2   d_A   d_B   ..
1    1    2    3    2    1       2       3     2     0     0    ..
2    4    2    19   1    4       2       19    1     0     0    ..
2    2    2    3    1    2      64       2     1     0     62   ..

谢谢你,

最佳答案

使用concatDataFrame.add_suffix :

df = pd.concat([df1, df2.add_suffix('_2')], axis=1)
#alternative solution
#df = df1.join(df2.add_suffix('_2'))
print (df)
   A  B  C  D  A_2  B_2  C_2  D_2
1  1  2  3  2    1    2    3    2
2  2  2  3  1    4    2   19    1
3  2  3  2  1    2   64    2    1

另一个想法是通过参数keys创建MultiIndex,然后通过使用f-strings进行列表理解来压平它 - 输出有点不同:

df = pd.concat([df1, df2], axis=1, keys=('1','2'))
df.columns = [f'{j}_{i}' for i, j in df.columns]
print (df)
   A_1  B_1  C_1  D_1  A_2  B_2  C_2  D_2
1    1    2    3    2    1    2    3    2
2    2    2    3    1    4    2   19    1
3    2    3    2    1    2   64    2    1

关于python - 将两个数据帧与新索引号合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52834064/

相关文章:

python - 正则表达式搜索列表,但返回相同大小的列表

Python 3 在划分两个大数时给出错误的输出?

python - 如何检查 Pandas 数据框中是否存在具有特定列值的行

python - 获取最佳性能列的不同成员之间的比率

python - 如何串联或取消串联 pandas 数据框中的字符串值?

python - 读取文件内容的类

python - Discord.py 重写冷却命令

python - 如何从 Pandas 数据框中的时间戳列中删除时区

java - 从字符串获取资源

java - 如何在 java-Mysql 选择查询中使用带参数的正则表达式?