我是熊猫和python的初学者,需要一点帮助。 这是我的数据集,k_symbol列标记UVER或SIPO,我想将UVER替换为int 0,将SIPO替换为int 1。
我尝试了dff.replace(to_replace = ['k_symbol'],value = [1,0]),但这似乎不正确。 感谢任何建议
答案 0 :(得分:1)
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
答案 1 :(得分:0)
import pandas as pd
df = pd.DataFrame(["SIPO","UVER"] * 3, columns=["k_symbol"])
df["k_symbol"].map({"UVER":0,"SIPO":1})
输出: 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
答案 2 :(得分: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
答案 3 :(得分: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)
答案 4 :(得分:0)
您可以传递一个匿名函数(Lambda),说明要在apply中进行检查的条件。
df['k_symbol'] = df['k_symbol'].apply(lambda x : 0 if x == 'UVER' else 1 )
答案 5 :(得分:0)
我相信一种更好(更快)的方法是使用.eq()
:
df['k_symbol'] = df['k_symbol'].eq('SIPO').astype(int)