我有以下資料框。
data = pd.read_csv("Example.csv")
data["Column1"]
Column0 Column1
0 a Gold
1 b Silver
2 b Silver (Running)
3 c Bronze (800m)
4 c Bronze
5 a 2x Gold (500m)
6 a Really Successful, 2x WM Gold (500m)
我的目標是只用獎牌替換一些弦樂。
data = pd.read_csv("Example.csv")
data["Column1"]
Column0 Column1
0 a Gold
1 b Silver
2 b Silver
3 c Bronze
4 c Bronze
5 a Gold
6 a Gold
7 a Gold
8 a Gold
這個方法我已經試過了replace()。但它不起作用。像這樣 :
data[Column1] = data.replace({"Column1": "Silver"}, "Silver)
uj5u.com熱心網友回復:
你可以試試str.extract
df['Column1'] = df['Column1'].str.extract('(Gold|Silver|Bronze)')
print(df)
Column0 Column1
0 a Gold
1 b Silver
2 b Silver
3 c Bronze
4 c Bronze
5 a Gold
6 a Gold
要忽略大小寫,您可以使用flags引數
import re
df['Column1'] = df['Column1'].str.extract('(gold|silver|bronze)', flags=re.IGNORECASE)
uj5u.com熱心網友回復:
嘗試使用:
data[Column1] = data.replace({'Silver (Running)':'Silver'})
data[Column1]
uj5u.com熱心網友回復:
您需要明確定義要解決的問題您的問題不是用例replace,您要做的是僅保留“Column1”列中的獎牌,而不是替換整個字串。您可以按如下方式解決此問題
創建資料框
df = pd.DataFrame({"Column0": ["a","b","b","c","c","a","a",], "Column1":[
"Gold ",
"Silver ",
"Silver (Running)",
"Bronze (800m)",
"Bronze ",
"2x Gold (500m)",
"Really Successful, 2x WM Gold (500m)",
]})
Column1您可以使用以下功能在列上使用 apply
def replace_string_by_medal(string):
for medal in ["Gold","Silver","Bronze"]:
if medal in string:
return medal
df.Column1.apply(replace_string_by_medal)
這將回傳一個包含您想要的列,您可以用Column1新值替換該列
df.loc["Column1"] = df.Column1.apply(replace_string_by_medal)
df
Column0 Column1
0 a Gold
1 b Silver
2 b Silver
3 c Bronze
4 c Bronze
5 a Gold
6 a Gold
uj5u.com熱心網友回復:
由于您有已定義的可能性串列,因此最簡單的方法是使用str.extract:
df['Column1'] = df['Column1'].str.extract('(Gold|Silver|Bronze)')
輸出:
Column0 Column1
0 a Gold
1 b Silver
2 b Silver
3 c Bronze
4 c Bronze
5 a Gold
6 a Gold
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/469031.html
上一篇:如何根據另一列修改一列的空值?
