我在Python dataframe中的一列中有一个数据。
1-2 3-4 8-9
4-5 6-2
3-1 4-2 1-4
需要对该列中所有可用的数据求和。
我试着应用下面的逻辑,但它不适用于列表列表。
lst=[]
str='5-7 6-1 6-3'
str2 = str.split(' ')
for ele in str2:
lst.append(ele.split('-'))
print(lst)
sum(lst)
有谁能告诉我最简单的方法吗?
我的预期结果应该是:
27
17
15
发布于 2021-10-28 18:06:18
我想我们可以一分为二
df.col.str.split(' |-').map(lambda x : sum(int(y) for y in x))
Out[149]:
0 27
1 17
2 15
Name: col, dtype: int64
或
pd.DataFrame(df.col.str.split(' |-').tolist()).astype(float).sum(1)
Out[156]:
0 27.0
1 17.0
2 15.0
dtype: float64
发布于 2021-10-28 18:01:25
使用pd.Series.str.extractall
df = pd.DataFrame({"col":['1-2 3-4 8-9', '4-5 6-2', '3-1 4-2 1-4']})
print (df["col"].str.extractall("(\d+)")[0].astype(int).groupby(level=0).sum())
0 27
1 17
2 15
Name: 0, dtype: int32
发布于 2021-10-28 18:02:15
在同一级别上使用.str.extractall
和sum
:
df['data'].str.extractall('(\d+)').astype(int).sum(level=0)
输出:
0
0 27
1 17
2 15
https://stackoverflow.com/questions/69758754
复制相似问题