gpt4 book ai didi

python - 如何根据列中的值合并列中的值

转载 作者:行者123 更新时间:2023-11-28 22:11:56 25 4
gpt4 key购买 nike

我有一个 xlsx 看起来像这样:

Company    N
A 1234;878;3434
A 5678;873
B 539
B 00;123
C 155;741;655
C 5377;454

我在用pandas导入到我的程序中,我可以根据他们的公司合并N吗?

期望的结果:{'A':[1234,878,3434,5678,873],'B':[539, 00, 123],'C':[155, 741, 655, 5377 , 454]}

最佳答案

groupby 和 split,然后应用 list 并转向 dict,如:

import itertools
(df.groupby('Company').apply(lambda x:
list(map(int,itertools.chain.from_iterable(x['N'].str.split(';'))))).to_dict())

{'A': [1234, 878, 3434, 5678, 873],
'B': [539, 0, 123],
'C': [155, 741, 655, 5377, 454]}

你也可以使用 sum 来连接列表,但不推荐用于大数据(它有性能问题,最好使用 itertools)

EDIT 用于从列表中切片 2 个元素:

import itertools
(df.groupby('Company').apply(lambda x:
list(map(int,[k[:2] for k in itertools.chain.from_iterable(x['N'].str.split(';'))]))).to_dict())

这个输出:

{'A': [12, 87, 34, 56, 87], 'B': [53, 0, 12], 'C': [15, 74, 65, 53, 45]}

注意这里使用了 map(),它用于将列表元素从字符串转换为 int。由于原始 dtype 是一个字符串,而我们执行 str.split(),列表中有字符串。

关于python - 如何根据列中的值合并列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55325953/

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