gpt4 book ai didi

python - 使用 DataFrames 合并(加入)4 个具有不同 ID 和多个值的不同 CSV 文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:34 25 4
gpt4 key购买 nike

我有 4 个不同的 CSV 文件要合并(加入)。主文件包含所有列,并且包含其他文件之一的标识符(连接列)。

例如主文件包含:

Name           | Address             | ID_1  | ID_2        | ID_3
Ruth D. Batie | 4962 Hill Street | 1_001 | NaN | 3_004
Kelley C. Rice | 1074 Tipple Road | NaN | 2_002 | NaN
Gary P. Kirby | 1520 Robinson Court | 1_004 | 2_002;2_004 | 3_004

文件查找 1 包含:

ID_1  | Monthly_MB
1_001 | 1557
1_002 | 1024
1_003 | 500
1_004 | 24

文件查找 2 包含:

ID_2  | platform
2_001 | ios
2_002 | android
2_003 | ios
2_004 | ios

文件查找 3 包含:

ID_3  | Device
3_001 | T31
3_002 | IN265
3_003 | AG_Flair
3_004 | BOOST2

我想结束这个:

Name           | Address             | ID_1  | ID_2        | ID_3
Ruth D. Batie | 4962 Hill Street | 1557 | NaN | BOOST2
Kelley C. Rice | 1074 Tipple Road | NaN | android | NaN
Gary P. Kirby | 1520 Robinson Court | 24 | android;ios | BOOST2

我的一些代码:

result = pd.merge(df_main,
df_1[['ID_1', 'Monthly_MB']],
df_2[['ID_2', 'platform']],
df_3[['ID_3', 'Device']],
on=' ??')
result.head()

然后我迷失了内部连接部分 (on=''),因为有不同的列要连接,一列包含两个值(甚至可以超过 2 个),用分号分隔;

Gary P. Kirby  | 1520 Robinson Court | 1_004 | 2_002;2_004 | 3_004

我对 Pandas 很陌生,所以非常感谢任何帮助。

最佳答案

我建议首先使用 DataFrame.set_index 创建包含所有查找文件的字典和 Series.to_dict :

d = {'ID_1' : df2.set_index('ID_1')['Monthly_MB'].to_dict(),
'ID_2' : df3.set_index('ID_2')['platform'].to_dict(),
'ID_3' : df4.set_index('ID_3')['Device'].to_dict()}

然后遍历字典的所有键并使用列表推导 - 首先按 拆分值; 如果是字符串,则按字典映射,然后按 返回 join;:

for c in d.keys():
f = lambda x: ';'.join(str(d[c].get(y, '')) for y in x.split(';'))
if isinstance(x, str)
else x
df1[c] = df1[c].apply(f)

print (df1)
Name Address ID_1 ID_2 ID_3
0 Ruth D. Batie 4962 Hill Street 1557 NaN BOOST2
1 Kelley C. Rice 1074 Tipple Road NaN android NaN
2 Gary P. Kirby 1520 Robinson Court 24 android;ios BOOST2

关于python - 使用 DataFrames 合并(加入)4 个具有不同 ID 和多个值的不同 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55220772/

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