pandas 使用koalas连接name_data Dataframe 中特定列中存在的值上的两个 Dataframe

xnifntxz  于 2023-03-16  发布在  其他
关注(0)|答案(2)|浏览(116)

我正尝试在name_data Dataframe 中存在的code列值上连接两个 Dataframe ,如下所示。
我有两个如下所示的 Dataframe ,我希望得到一个结果 Dataframe ,它只包含来自'team_data dataframe where the corresponding code value column is present in the name_data' Dataframe 的行。
我在数据库上使用考拉来完成这个任务,我有下面的代码使用连接操作。

import databricks.koalas as ks

name_data= ks.DataFrame({'code':['123a', '345b', '678c'],
        'id':[1, 2, 3]})

team_data = ks.DataFrame({'code':['123a', '23s', '34a'],
        'id':[1, 2, 3]})

team_data_filtered = team_data.join(name_data.set_index('code'), on='code')

display(team_data_filtered)

team_data_filtered中,预期输出将仅显示以下内容。

Code    id
'123a'   1

但是我的代码抛出一个错误,指出columns overlap but no suffix specified: ['id']
有人可以帮助解决此问题吗?

eqqqjvef

eqqqjvef1#

尝试添加后缀参数:

team_data_filtered = team_data.join(name_data.set_index('code'), on='code', 
                                                lsuffix='_1', rsuffix='_2')
team_data_filtered = team_data_filtered.loc[team_data_filtered.id_1==team_data_filtered.id2]
display(team_data_filtered)

如果需要,然后清洗色谱柱:

team_data_filtered.rename({'id_1':'id'}, inplace=True, axis=1)
kiayqfof

kiayqfof2#

name_data= ps.DataFrame({'code':['123a', '345b', '678c'],
                         'id':[1, 2, 3]})

team_data = ps.DataFrame({'code':['123a', '23s', '34a'],
                          'id':[1, 2, 3]})

team_data_filtered = team_data.join(name_data.set_index('code'),how='inner', on='code',rsuffix="_2")

team_data_filtered.drop("id_2",axis=1).to_spark().show()

输出:

+----+---+
|code| id|
+----+---+
|123a|  1|
+----+---+

相关问题