2017-06-13 85 views
1

我正在运行一个SQL查询,其中结果中有一个名为'type'的列包含'A'或'B'作为其值。我想将'A'转换为0,'B'转换为1.据我所知,数据框不允许字符串,所以我不知道如何去做这件事。熊猫:将字符串转换为使用函数浮动

我是否需要先使用SQL进行此转换,然后使用Pandas将结果读入数据框?

任何想法?

谢谢!

+0

你是什么意思dataframes不允许字符串?请发布示例代码。 – suvy

回答

2

如果你想replace值,你可以这样做:

df['type'] = df['type'].replace("A",0).replace("B",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

熊猫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']])