gpt4 book ai didi

python - 将具有公共(public)键的行转换为单行多列

转载 作者:行者123 更新时间:2023-12-01 02:05:04 25 4
gpt4 key购买 nike

我有两个数据框要合并为一个。 main_id 框架包含唯一 ID 的列表。 ref_data 框架包含有关 main_id 中对象的一些数据。有些 id 被引用两次,有些只引用一次,所以我认为我需要一对多连接。我想捕获period值及其相应的quantity,并使用一些识别后缀将两者链接起来。我已经查看了有关合并的 pandas 文档,但没有真正看到提到此用例的内容。非常感谢任何帮助。

示例

main_id 框架:

main_id = pd.DataFrame(data = [123,456,789], columns=['id'])

main_id

Out[109]:
id
0 123
1 456
2 789

ref_data 框架:

ref_data = pd.DataFrame()
ref_data['main_id'] = main_id['id'].append(main_id['id'].loc[1:])
ref_data = ref_data.reset_index(drop=True)
ref_data['period'] = ['24hr', 'Day', 'Day', 'Night', 'Night']
ref_data['quantity'] = [3,4,6,5,2]
ref_data

Out[111]:
main_id period quantity
0 123 24hr 3
1 456 Day 4
2 789 Day 6
3 456 Night 5
4 789 Night 2

期望的输出:

Out[112]: 
id period_1_ref period_1_val period_2_ref period_2_val
0 123 24hr 3 NaN NaN
1 456 Day 4 Night 5.0
2 789 Day 6 Night 2.0

最佳答案

这应该适合你,只需使用groupby无需合并

mrg = ref_data.groupby('main_id').apply(lambda x: x[['period','quantity']].values.ravel())

pd.DataFrame(mrg.tolist(),index=mrg.index,columns=['period_1_ref','period_1_val','period_2_ref','period_2_val'])

period_1_ref period_1_val period_2_ref period_2_val
main_id
123 24hr 3 None NaN
456 Day 4 Night 5.0
789 Day 6 Night 2.0

关于python - 将具有公共(public)键的行转换为单行多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49159725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com