python - 需要合并两个数据框的两列或同一数据框的两列
问题描述
我有两个数据框。我想组合相同/不同数据框的两个不同列。我在两个数据框中都有不同的列名。
我已经尝试过如下。但输出并不如预期。
import pandas as pd
df1 = pd.DataFrame({
'A': ['a','a','a'],
'B': range(3)
})
df2 = pd.DataFrame({
'C': ['c','c','c'],
'D': ['4','5','6']
})
df = df1.join(df2)
print (df)
但我预计 df1 的 A 和 B 列下的输出如下所示。
请看一下并帮助我。
解决方案
我认为您需要rename
在评论中提到@wwnde:
df = df1.append(df2.rename(columns={'C':'A','D':'B'}), ignore_index=True)
或者:
df = pd.concat([df1, df2.rename(columns={'C':'A','D':'B'})], ignore_index=True)
如果需要通过从列名创建的字典动态设置列zip
:
d = dict(zip(df2.columns, df1.columns))
df = df1.append(df2.rename(columns=d), ignore_index=True)
print (df)
A B
0 a 0
1 a 1
2 a 2
3 c 4
4 c 5
5 c 6
编辑:
df1 = pd.DataFrame({ 'A': ['a1','a2','a3'], 'B': range(3), 'C': ['c1','c2','c3'], 'D': ['4','5','6'] })
df = df1[['A','B']].append(df1[['C','D']].rename(columns={'C':'A','D':'B'}), ignore_index=True)
print (df)
A B
0 a1 0
1 a2 1
2 a3 2
3 c1 4
4 c2 5
5 c3 6
推荐阅读
- c# - ASP.NET HTML - 文本框非常靠近,需要帮助在它们之间放置空间
- cordova - 使用 Cordova 脚本创建 .ipa 文件
- umbraco - Umbraco 7.4 URL 重定向功能
- typescript - X 类型的参数不能分配给 Y 类型的参数(尽管有继承)
- regex - 结构替换可能复杂的 RegexReplace 解决方案?
- r - 使用 lme4 自定义引导置信区间
- sql-server - SQL Server 中的正则表达式 - 连字符分隔的字符串
- javascript - javascript 将函数对象传递给网络工作者 - 无法克隆错误 DataCloneError
- swift - 如何在 swiftUI 中添加拖动手势以便更改视图?有点像 Snapchat,向右滑动可以让你看到故事?
- javascript - 将日期添加到数组的 Javascript for 循环会冻结某些 PC 上的页面