python - 如何加入两个数据框并将所有关键列保留在熊猫中?
问题描述
我需要使用相同的键来内部连接 2 个数据帧我在进行连接时创建了几个临时数据帧下面的代码工作正常,但我想知道在加入下面的两个 pandas 数据帧时是否有办法保留两个连接键列主题作为关键。
head = [['nationality', 'BART', 'USA']]
body = [['placeOfBirth', 'BART', 'NEWYORK'], ['hasFather', 'BART', 'HOMMER']]
head_df = pd.DataFrame(head, columns = ['pred', 'subj', 'obj'])
body_df = pd.DataFrame(body, columns = ['pred', 'subj', 'obj'])
joined_df = pd.merge(head_df, body1_df, how='inner' ,on='subj')
我有这两个数据框
头_df:
pred subj obj
0 nationality BART USA
body_df :
pred subj obj
0 placeOfBirth BART NEWYORK
1 hasFather BART HOMMER
我想加入(内部)这两个基于 subj(head_df)和 subj(body_df)的数据帧。
我想要的输出是
pred_x subj_x obj_x pred_y subj_y obj_y
0 nationality BART USA placeOfBirth BART NEWYORK
1 nationality BART USA hasFather BART HOMMER
谢谢
解决方案
如果要将“_x”和“_y”添加到列标签,请使用suffixes
.
joined_df = pd.merge(head_df, body_df, how='inner', on='subj', suffixes=['_x', '_y'])
结果将是:
pred_x subj obj_x pred_y obj_y
0 nationality BART USA placeOfBirth NEWYORK
1 nationality BART USA hasFather HOMMER
我不知道你为什么需要重复的加入列。只复制那些列怎么样?
joined_df = pd.merge(head_df, body_df, how='inner', on='subj', suffixes=['_x', '_y'])
joined_df.rename(columns={'subj':'subj_x'}, inplace=True)
joined_df['subj_y'] = joined_df['subj_x']
结果将是:
pred_x subj_x obj_x pred_y obj_y subj_y
0 nationality BART USA placeOfBirth NEWYORK BART
1 nationality BART USA hasFather HOMMER BART
推荐阅读
- python - 何时停止使用三元组损失进行训练?
- linux - 如何在ansible中使用断言模块比较整数?
- django - 如何在 Django ORM 中表示复杂的子查询和计算表?
- java - 将 ServletContext 属性的内容保存在 int 变量中
- c - 请求 ProcessBasicInformation 时 ZwQueryInformationProcess 的奇怪行为
- c# - 如何修复“位置 1 没有行”
- c++ - 多次返回时清理内存 - 函数 C++
- reactjs - 单击时 Redux 状态计数未更新
- java - Libgdx firebase robovm 绑定
- php - 将 JSON 对象作为字符串而不是数组发送