我正在运行一个SQL查询,其中结果有一个名为“type”的列,其中包含“A”或“B”作为其值。我想将'A'转换为0并将'B'转换为1.据我所知,数据帧不允许使用字符串,所以我不确定如何解决这个问题。
我是否需要先使用SQL进行转换,然后使用Pandas将结果读入数据帧?
有什么想法吗?
谢谢!
答案 0 :(得分:2)
如果您想要replace值,可以执行以下操作:
df['type'] = df['type'].replace("A",0).replace("B",1)
但是Pandas DataFrame应该允许使用字符串
答案 1 :(得分:2)
我不确定我是否完全理解大熊猫不允许使用字符串的含义,但是将值转换为0和1的快速方法如下:
df = pd.DataFrame(['A', 'B', 'A'], columns=['x'])
df['x_int'] = (df['x'] == 'B').astype(int)
df
x x_int
0 A 0
1 B 1
2 A 0
在这里,您首先将系列转换为布尔值,然后转换为整数
答案 2 :(得分:2)
Pandas DataFrames允许使用字符串,但大多数预测/回归/分类方法都不允许。
有很多方法可以将字符串转换为数值:
df['type'] = df['type'].map({'A':0, 'B':1})
IMO最灵活的是:
df['type'] = pd.factorize(df['type'])[0]
和
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['type'] = le.fit_tramsform(df[['type']])