如何在熊猫中自行加入df?

Posted

技术标签:

【中文标题】如何在熊猫中自行加入df?【英文标题】:How to join df on itself in pandas? 【发布时间】:2019-05-04 04:46:19 【问题描述】:

如何加入我的 DataFrame?

d = 'users': [1,2,3,4,5,6,7,8,9], 'code': [12,21,34,12,21,40,74,40,92] 
df = pd.DataFrame(data=d)

我想使用“代码”匹配我的“用户”。

我希望我的桌子是这样的-

user1 user2 code active  
1      4      12   1
2      5      21   1
3     NONE    34   0
6      8      40   1

等等..

【问题讨论】:

现在好点了吗? (编辑问题) 我不确定你想在那里做什么。您想要的表有 4 列,但您的数据框只有 2。您想如何填充这些额外的列? active 列从何而来? 【参考方案1】:

在我看来,最好创建包含 id1、id2、代码和状态的类“Pair”。并存储这些对象的列表。

但如果你必须使用你的结构,你可以使用自定义函数来创建这样的 DataFrame。

    def get_data_frame(data):
        columns = ['user1', 'user2', 'code', 'active']
        main_df = pd.DataFrame(columns=columns)
        for index, user in enumerate(data['users']):
            if data['code'][index] in main_df['code'].unique():
                main_df.loc[main_df['code'] == data['code'][index], ['user2']] = user
                main_df.loc[main_df['code'] == data['code'][index], ['active']] = True
            else:
                temp_df = pd.DataFrame(data=[[user, None, data['code'][index], False]], columns=columns)
                main_df = main_df.append(temp_df,  ignore_index=True)

        return main_df

【讨论】:

以上是关于如何在熊猫中自行加入df?的主要内容,如果未能解决你的问题,请参考以下文章

熊猫交叉加入没有共同的列[重复]

熊猫 - 按时间接近加入

如何在熊猫中进行“(df1&not df2)”数据框合并?

如何在熊猫中组合数据框选择查询? [复制]

如何在熊猫 DF 列中删除连续的相似数字

根据线序加入两个熊猫数据框