[英]replace part of an int or string in a pandas dataframe column upon condition
[英]Pandas replace string in a column as int
我是 pandas 和 python 的初學者,尋求一點幫助。 這是我的數據集,k_symbol 列標簽為 UVER 或 SIPO,我想將 UVER 替換為 int 0,將 SIPO 替換為 int 1。
我嘗試了 dff.replace(to_replace=['k_symbol'], value=[1, 0]),但它似乎不正確。 感謝任何建議
apply()
函數是出了名的慢,所以如果你關心速度,考慮這些解決方案之一
df["k_symbol"].map({"UVER":0, "SIPO":1})
df["k_symbol"] = (df["k_symbol"] == "SIPO").astype(int)
%%timeit
df["k_symbol"] = (df["k_symbol"] == "SIPO").astype(int)
10 loops, best of 3: 83.3 ms per loop
%%timeit
df['k_symbol'].apply(lambda x : 0 if x == 'UVER' else 1 )
1 loop, best of 3: 550 ms per loop
%%timeit
df["k_symbol"].map({"UVER":0,"SIPO":1})
10 loops, best of 3: 83.6 ms per loop
import pandas as pd
df = pd.DataFrame(["SIPO","UVER"] * 3, columns=["k_symbol"])
df["k_symbol"].map({"UVER":0,"SIPO":1})
Output:df
k_symbol
0 SIPO
1 UVER
2 SIPO
3 UVER
4 SIPO
5 UVER
映射:
0 1
1 0
2 1
3 0
4 1
5 0
使用.loc
:
import pandas as pd
df = pd.DataFrame(
[[1, "SIPO"], [0, "UVER"], [0, "UVER"], [0, "UVER"], [1, "UVER"],],
columns=["gender", "k_symbol"],
)
df.loc[df["k_symbol"] == "SIPO", "k_symbol"] = 1
df.loc[df["k_symbol"] == "UVER", "k_symbol"] = 0
print(df)
返回:
gender k_symbol
0 1 1
1 0 0
2 0 0
3 0 0
4 1 0
使用這一行來獲得所需的結果。
df.k_symbol = df.k_symbol.apply(lambda o : 1 if o == 'SIPO' else 0 if o == 'UVER' else o)
您可以將其簡化如下,如果 SIPO 以外的所有內容都為 0
df.k_symbol = df.k_symbol.apply(lambda o : 1 if o == 'SIPO' else 0)
您可以傳遞一個匿名的 function (Lambda) 來說明在應用中檢查的條件。
df['k_symbol'] = df['k_symbol'].apply(lambda x : 0 if x == 'UVER' else 1 )
我相信更好(更快)的方法是使用.eq()
:
df['k_symbol'] = df['k_symbol'].eq('SIPO').astype(int)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.