Python 将数据帧与对象合并
我试图在键“id”上合并3个数据帧,但不知何故无法得到正确的结果 最后,我想要一个包含两行的数据帧,一行id为“abc”,对象为something,1,something,1,一行id为“def”,对象为object2,1,对象为something,1。 有没有办法用熊猫来实现这一点Python 将数据帧与对象合并,python,pandas,dataframe,Python,Pandas,Dataframe,我试图在键“id”上合并3个数据帧,但不知何故无法得到正确的结果 最后,我想要一个包含两行的数据帧,一行id为“abc”,对象为something,1,something,1,一行id为“def”,对象为object2,1,对象为something,1。 有没有办法用熊猫来实现这一点 import pandas as pd df1 = pd.DataFrame([[]]) df1['id'] ='abc' df1['object'] = -1 df1['object'] = df1['objec
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) |
康卡特和groupby
使用“第一个”解决潜在的非唯一性。这是相当稳健的
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)
现在还不清楚您希望最终结果是什么样子。请您再解释一下您的输出,或者展示一下它应该是什么样子?是的,当然。很抱歉,@piRSquared!我举了一个例子,说明我希望我的数据框看起来像是对帖子的编辑。我不明白为什么id“abc”在“object3”列中有一个“something1”,1。等等,你更新了初始数据。