根据pandas数据框中另一列的条件,将int64值替换为“ None”

时间:2018-11-01 14:42:23

标签: python pandas dataframe

我有熊猫数据框

[1]: https://i.stack.imgur.com/jWe9U.png

条件是:

'如果RPoints中的值不是-1,则kPoints中的任何0都应视为“无”

'如果RPoints中的值不是-1,则WPoints中的任何0都应被视为“无”。

数据类型如下:

kPoints         int64

RPoints         int64

WPoints         int64

如何将-1替换为“无”? 而且我猜想“ None”对分析没有帮助,那么我应该如何删除那些包含“ None”的行?

2 个答案:

答案 0 :(得分:0)

您可以替换单个列并更改其类型:

df['foo'] = df['foo'].astype(np.object)

然后:

df['foo'][0] = None

请注意,这将使列上的任何处理变慢,因为类型现在是Python对象,而不是数组中的整数。

答案 1 :(得分:0)

尝试

数据

   id  kpoints  Rpoints  Wpoints
0   1     1241       -1     1466
1   2        0     1475        0
2   3        0     1586        0
3   4        0       -1        0

使用

data.loc[(data['Rpoints'] != -1) & (data['kpoints'] == 0), 'kpoints'] = None
data.loc[(data['Rpoints'] != -1) & (data['Wpoints'] == 0), 'Wpoints'] = None

输出

   id  kpoints  Rpoints  Wpoints
0   1   1241.0       -1   1466.0
1   2      NaN     1475      NaN
2   3      NaN     1586      NaN
3   4      0.0       -1      0.0

简单的data.dropna()将删除所有na行