我想逐行合并两个相似的数据框
我的代码:
d5=pd.DataFrame([["Id1",5313.0],["Id1",414542.0]])
d5.columns=["Id","Random"]
d6=pd.DataFrame([["Id1",15616.0],["Id1",168449.0]])
d6.columns=["Id","Random"]
我得到的是:
Id1 5313.0 15616.0
Id1 5313.0 168449.0
Id1 414542.0 15616.0
Id1 414542.0 168449.0
我想要的是:
Id1 5313.0 15616.0
Id1 414542.0 168449.0
我不明白他为什么要创建两个单独的行。
另外,如果我想在第一个数据帧中再增加一列,则要在第二个数据帧中这样表示Nan值:
Id1 5313.0 15616.0
Id1 414542.0 168449.0
Id1 113.0 NaN
是因为我有相同的ID吗?
答案 0 :(得分:1)
df = pd.concat([d5,d6] , join='outer',axis=1).reset_index(drop=True) #this will join the dataframe right side
df.T.drop_duplicates().T # this will drop the duplicate column
答案 1 :(得分:0)
让我们考虑不只包含一个print(stripe_customer_subscription['cancel_at_period_end'])
的数据,例如。 g。
Id
有了这样的数据,loving_guy的方法将不同的>>> d5
Id Random
0 Id1 5313.0
1 Id1 414542.0
2 Id1 113.0
>>> d6
Id Random
0 Id1 15616.0
1 Id1 168449.0
2 Id2 1.0
值配对,得出:
Id
如果不希望这样做,可以使用另一种方法:
Id Random Id Random
0 Id1 5313 Id1 15616
1 Id1 414542 Id1 168449
2 Id1 113 Id2 1
那可以给:
import pandas as pd
d5 = pd.DataFrame([["Id1",5313.0], ["Id1",414542.0],["Id1",113.0]], columns=["Id","Random"])
d6 = pd.DataFrame([["Id1",15616.0],["Id1",168449.0],["Id2",1]], columns=["Id","Random"])
d56 = pd.DataFrame()
for id in {*d5.groupby('Id').groups, *d6.groupby('Id').groups}:
d56 = d56.append(pd.DataFrame({'Id':id, 'Random5':d5[d5['Id']==id]['Random'],
'Random6':d6[d6['Id']==id]['Random']}))
print(d56)