CSV Python:如何合并 A 列中的重复项并将 A 附加值放在 B 列中?
CSV Python: How to combine duplicates in column A and put A-attached values together in Column B?
在一个CSV文件中,我在A列中有重复的值,但在B列中它们有不同的值。我希望将A列中的值(IP)减少到一行并且B 列中它旁边列出的各个关联值,以逗号分隔。
我尝试了不同的代码示例,但不知何故没有任何效果。
如果你能帮助我,我会很高兴:)
我能够使用与 Python 3.x
一起工作的每个模块
它的实际外观:
IP;Ports
192.168.3.1;53
192.168.3.2;22
192.168.3.2;80
192.168.3.2;2000
192.168.3.2;3000
外观应该如何:
IP;Ports
192.168.3.1;53
192.168.3.2;22, 80 ,2000, 3000
您始终可以将 groupby
与 unique
函数一起使用:
df = pd.DataFrame(data={
'IP': ['192.168.3.1', '192.168.3.2', '192.168.3.2', '192.168.3.2', '192.168.3.2'],
'Port': [53, 22, 80, 2000, 3000]
})
grouped_df = df.groupby(['IP'])['Port'].unique().reset_index()
结果为:
IP Port
0 192.168.3.1 [53]
1 192.168.3.2 [22, 80, 2000, 3000]
您应该在加载时指定 str 数据类型:
df = pd.read_csv('input.csv', sep=';', dtype=str)
df.groupby('IP').agg(', '.join).reset_index().to_csv('output.csv', sep=';',
index=False)
它给出了预期的结果:
IP;Ports
192.168.3.1;53
192.168.3.2;22, 80, 2000, 3000
在一个CSV文件中,我在A列中有重复的值,但在B列中它们有不同的值。我希望将A列中的值(IP)减少到一行并且B 列中它旁边列出的各个关联值,以逗号分隔。 我尝试了不同的代码示例,但不知何故没有任何效果。 如果你能帮助我,我会很高兴:)
我能够使用与 Python 3.x
一起工作的每个模块它的实际外观:
IP;Ports
192.168.3.1;53
192.168.3.2;22
192.168.3.2;80
192.168.3.2;2000
192.168.3.2;3000
外观应该如何:
IP;Ports
192.168.3.1;53
192.168.3.2;22, 80 ,2000, 3000
您始终可以将 groupby
与 unique
函数一起使用:
df = pd.DataFrame(data={
'IP': ['192.168.3.1', '192.168.3.2', '192.168.3.2', '192.168.3.2', '192.168.3.2'],
'Port': [53, 22, 80, 2000, 3000]
})
grouped_df = df.groupby(['IP'])['Port'].unique().reset_index()
结果为:
IP Port
0 192.168.3.1 [53]
1 192.168.3.2 [22, 80, 2000, 3000]
您应该在加载时指定 str 数据类型:
df = pd.read_csv('input.csv', sep=';', dtype=str)
df.groupby('IP').agg(', '.join).reset_index().to_csv('output.csv', sep=';',
index=False)
它给出了预期的结果:
IP;Ports
192.168.3.1;53
192.168.3.2;22, 80, 2000, 3000