【问题标题】:Pandas DataFrame - modify in place based on criteria [duplicate]Pandas DataFrame - 根据标准就地修改[重复]
【发布时间】:2018-07-19 00:48:10
【问题描述】:

我有这个数据框

import pandas as pd
x = pd.DataFrame.from_dict({'A':[1,2,0,4,0,6], 'B':[0, 0, 0, 44, 48, 81], 'C':[1,0,1,0,1,0]})

我试着改成这样,但是不行

x[x['A']>3]['A'] = 33 # has no effect

我也试过

x.loc(x['A']>3)['A'] = 33 # getting an error

那么正确的做法是什么?

【问题讨论】:

  • 使用x.loc[x['A'].gt(3), 'A'] = 33
  • 回答 OP 的问题,x[x['A']>3]['A'] = 33 不会就地修改数据框;而是复制数据帧的一部分并修改副本。使用.loc 并将您的索引(行和列)放在同一个方括号内以修改数据框本身。

标签: python pandas dataframe


【解决方案1】:

你应该使用.loc

x.loc[x['A']>3,'A'] = 33
x
Out[480]: 
    A   B  C
0   1   0  1
1   2   0  0
2   0   0  1
3  33  44  0
4   0  48  1
5  33  81  0

mask

x.A=x.mask(x.A>3,33)
x
Out[483]: 
    A   B  C
0   1   0  1
1   2   0  0
2   0   0  1
3  33  44  0
4   0  48  1
5  33  81  0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2011-04-22
    相关资源
    最近更新 更多