python - 将 pandas 数据框与对象合并
问题描述
我正在尝试在键“id”上合并 3 个 pandas 数据帧,但不知何故无法得到正确的结果。
最后,我想要一个包含 2 行的数据框,一个具有 id 'abc' 和对象 (something, 1), (something1,1) 和一个 id 'def' 与 object2 (something,1) 和对象 (something, 1)。有没有办法用熊猫来实现这一点?
import pandas as pd
df1 = pd.DataFrame([[]])
df1['id'] ='abc'
df1['object'] = -1
df1['object'] = df1['object'].astype('object')
df1.at[0,'object'] = ('something', 1)
df1['object3'] = -1
df1['object3'] = df1['object3'].astype('object')
df1.at[0,'object3'] = ('something1', 1)
df2 = pd.DataFrame([[]])
df2['id'] ='def'
df2['object2'] = -1
df2['object2'] = df2['object2'].astype('object')
df2.at[0,'object2'] = ('something2', 1)
df3 = pd.DataFrame([[]])
df3['id'] ='def'
df3['object3'] = -1
df3['object3'] = df3['object3'].astype('object')
df3.at[0,'object3'] = ('something3', 1)
编辑:
抱歉,我最初的问题并不清楚:我希望数据框最终看起来像以下内容:
| id | object | object2 | object3 |
|-----|-----------------|------------------|------------------|
| abc | ('something',1) | None | ('something1',1) |
| def | None | ('something2',1) | ('something3',1) |
解决方案
concat
和groupby
用于first
解决潜在的非唯一性。这是相当稳健的。
pd.concat([df1, df2, df3]).groupby('id', as_index=False).first()
id object object3 object2
0 abc (something, 1) (something1, 1) NaN
1 def NaN (something3, 1) (something2, 1)
推荐阅读
- flutter - 如何从图标中删除内置填充
- c++ - 如何获得两个链表的交集?
- javascript - React-Native/Firebase:来自 JS 的格式错误的调用:字段大小不同
- symfony - symfony messenger 多总线
- php - wp 使用 ACF 关系按成分类别过滤食谱
- ios - 我想在单击单元格时更改集合视图单元格的图像
- reactjs - 如何使用 Github Actions 保存构建文件(React)?
- java - 如何解决此计算器错误?我是初学者
- python - 并非所有字段都在 django admin 中正确显示
- python - 我如何将这些数字写入其中的列表,因为我尝试使用 for 循环但它不起作用并将其写入名为 list_of_numbers 的列表