我有一個資料框df
:
name rank
A captain, general, soldier
B general, foo, major
C foo
D captain, major
E foo, foo, foo
我想檢查列中的任何單元格是否rank
由.foo
foo
預期輸出:
name rank
A captain, general, soldier
B foo
C foo
D captain, major
E foo
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
df['rank'].replace('.*foo.*', 'foo', regex=True, inplace=True)
# OR
df['rank'].mask(df['rank'].str.contains('foo'), 'foo', inplace=True)
# OR
df.loc[df['rank'].str.contains('foo'), 'rank'] = 'foo'
輸出:
name rank
0 A captain, general, soldier
1 B foo
2 C foo
3 D captain, major
4 E foo
uj5u.com熱心網友回復:
您可以apply
對列使用 lambda 函式:
df["rank"] = df["rank"].apply(lambda x: "foo" if "foo" in x.split(", ") else x)
在分隔符上拆分允許檢查單詞。例如,世界“foobar”不會觸發其所在行的轉換。
編輯:感謝 BeRT2me 建議用 ', ' 分割。
uj5u.com熱心網友回復:
mask = df['rank'].str.contains('foo')
df.loc[mask, 'rank'] = 'foo'
uj5u.com熱心網友回復:
if df['rank'].str.contains('foo').any():
df['rank']='foo'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/493222.html
上一篇:計算部分資料框的標準差