且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

基于条件将 Pandas DataFrame 列从 String 转换为 Int

更新时间:2021-07-14 18:44:49

您正在尝试将标量与引发您看到的 ValueError 的整个系列进行比较.一个简单的方法是将布尔系列转换为 int:

You're trying to compare a scalar with the entire series which raise the ValueError you saw. A simple method would be to cast the boolean series to int:

In [84]:
df['viz'] = (df['viz'] !='n').astype(int)
df

Out[84]:
   viz  a1_count  a1_mean     a1_std
0    0         3        2   0.816497
1    1         0      NaN        NaN
2    0         2       51  50.000000

你也可以使用np.where:

In [86]:
df['viz'] = np.where(df['viz'] == 'n', 0, 1)
df

Out[86]:
   viz  a1_count  a1_mean     a1_std
0    0         3        2   0.816497
1    1         0      NaN        NaN
2    0         2       51  50.000000

布尔比较的输出:

In [89]:
df['viz'] !='n'

Out[89]:
0    False
1     True
2    False
Name: viz, dtype: bool

然后转换为 int:

In [90]:
(df['viz'] !='n').astype(int)

Out[90]:
0    0
1    1
2    0
Name: viz, dtype: int32