我在 Python 資料框中的一列中有一個資料。
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
uj5u.com熱心網友回復:
我想我們可以分開
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
uj5u.com熱心網友回復:
使用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
uj5u.com熱心網友回復:
在一個級別上使用.str.extractall和sum:
df['data'].str.extractall('(\d )').astype(int).sum(level=0)
輸出:
0
0 27
1 17
2 15
uj5u.com熱心網友回復:
for 回圈在這里作業正常,并且應該是高性能的,因為我們正在處理字串:
使用@HenryYik 的示例資料:
df.assign(sum_ = [sum(int(n) for n in ent
if n.isdigit())
for ent in df.col])
Out[1329]:
col sum_
0 1-2 3-4 8-9 27
1 4-5 6-2 17
2 3-1 4-2 1-4 15
我認為在回傳到 Pandas 資料幀之前,將它取出并在 Python 中作業會更快。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/340513.html
