数据框更改值问题

时间:2018-08-21 18:08:46

标签: python dataframe data-manipulation

我有超过100万行的大型数据集,并且列大小各不相同(有时是1列,有时是不同的列数)。最初,我创建了一个脚本,它运行正常。但是最近我遇到了一个问题,可以使用以下脚本来复制。

import pandas as pd
df=pd.DataFrame({'a':[0,0],'b':[100,1]})
df[df>0]='S1'
df[df==0]='S0'

错误:

TypeError: Cannot do inplace boolean setting on mixed-types with a non np.nan value

第3行和第4行可以互换,问题将出现在第4行。

初始df:

a b
0 100
0 1 

期望df:

a  b
S0 S1
S0 S1 

1 个答案:

答案 0 :(得分:1)

对于DataFrame范围内的替换,这并不完全正确。使用wheremask

df = df.where(df == 0, 'S1').where(df > 0, 'S0')
df
    a   b
0  S0  S1
1  S0  S1

或者,您可以使用np.select

df[:] = np.select([df > 0, df == 0], ['S1', 'S0'], default=df)
df
    a   b
0  S0  S1
1  S0  S1