熊猫合并创建重复的行

时间:2020-02-05 09:49:09

标签: python pandas

我想逐行合并两个相似的数据框

我的代码:

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吗?

2 个答案:

答案 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)