【发布时间】:2021-09-20 15:36:08
【问题描述】:
在与我的查找值相同的行显示任何匹配值时遇到问题,即
我的第一张桌子:
| some_primary_key |
|---|
| unique_value_1 |
| unique_value_2 |
| unique_value_3 |
其他表:
| some_primary_key | values |
|---|---|
| unique_value_1 | some_value_1 |
| unique_value_1 | some_value_2 |
| unique_value_2 | some_value_3 |
| unique_value_2 | some_value_4 |
| unique_value_3 | some_value_5 |
| unique_value_3 | some_value_6 |
最后我想要这个:
| some_primary_key | values |
|---|---|
| unique_value_1 | some_value_1, some_value_2 |
| unique_value_2 | some_value_3, some_value_4 |
| unique_value_3 | some_value_5, some_value_6 |
我应该使用列表推导迭代 df 项目并创建匹配值列表的列表吗?有什么想法吗?
答案:
这是我的示例解决方案:
import pandas as pd
data = {'some_primary_key':['unique_value_1',
'unique_value_2',
'unique_value_3']*2,
'values':['some_value_1', 'some_value_3', 'some_value_5',
'some_value_2', 'some_value_4', 'some_value_6']
}
df = pd.DataFrame(data=data)
list_of_values = []
for item in df['some_primary_key']:
filtered_values = df[df['some_primary_key']==item]
list_of_values.append(','.join(x for x in filtered_values['values']))
df['values'] = list_of_values
df = df.drop_duplicates()
print(df)
还有其他简洁的解决方案吗? :)
【问题讨论】:
-
嗨@qrzep,我只是用基准更新我的答案。看看那个。 :)
标签: python python-3.x pandas dataframe numpy