gpt4 book ai didi

python - 使用 python 对数据框列中以逗号分隔的单元格中的值求和

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:55 24 4
gpt4 key购买 nike

我有一个数据框列,其中的数值以逗号(,)分隔。我试图找到该列每个单元格中值的总和并创建一个新列。

输入:df:

       id Scores
1 10,12
2 11
3 1,2,3

所需输出:

      id Scores Sum
1 10,12 22
2 11 11
3 1,2,3 6

代码:我尝试编写一个自定义函数,以便我可以在python中使用apply函数

def sum_of_number(listx):
a=[]
n=0
if len(listx)==1:
a=listx
n=a
else:
a=str(listx).split(',')
for i in range(0,len(a)):
n=n+int(a[i])
return n

df['Sum']=df.Scores.apply(sum_of_number)

但是我无法得到预期的结果。

<小时/>

编辑:感谢DeepSpace提供解决方案

df['Sum'] = df['Scores'].apply(lambda x: sum(map(float, x.split(','))))

是否可以应用同样的方法来获得中位数

      id Scores Median
1 10,12 11
2 11 11
3 1,2,3 2

最佳答案

您可以通过组合 summapint(或 float)来使用更简单的代码,基于根据您的需要):

import pandas as pd

df = pd.DataFrame({'Scores': ['10,12', '11', '1,2,3']})
df['Sum'] = df['Scores'].apply(lambda x: sum(map(int, x.split(','))))
# or df['Sum'] = df['Scores'].apply(lambda x: sum(map(float, x.split(','))))
print(df)

# Scores Sum
# 0 10,12 22
# 1 11 11
# 2 1,2,3 6

上面假设值是字符串。如果这些值是实际的整数列表,那就更容易了:

import pandas as pd

df = pd.DataFrame({'Scores': [[10, 12], [11], [1, 2, 3]]})
df['Sum'] = df['Scores'].apply(sum)
print(df)

# Scores Sum
# 0 [10, 12] 22
# 1 [11] 11
# 2 [1, 2, 3] 6

关于python - 使用 python 对数据框列中以逗号分隔的单元格中的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47311322/

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