为什么在Pandas中设置列的值不起作用>

时间:2019-03-19 08:21:38

标签: python pandas

[在此处输入图像说明] [1]我有一个名为选举的数据框,我想为页边距小于1的行设置获胜者列为NaN。

![在此处输入图片描述] [2]

我正在做这样的事情

too_close = election['margin']<1

election.loc[too_close, 'winner'] = np.nan # THIS IS WORKING

我的问题是因为election.loc[too_close, 'winner']election[too_close].winner都返回了熊猫系列。为什么使用后者设置列值无效,而前者却有效。我是熊猫新手。这是数据框的5个初始值

          state   total      Obama     Romney  winner  voters    turnout     margin
county                                                                             
Adams        PA   41973  35.482334  63.112001  Romney   61156  68.632677  27.629667
Allegheny    PA  614671  56.640219  42.185820   Obama  924351  66.497575  14.454399
Armstrong    PA   28322  30.696985  67.901278  Romney   42147  67.198140  37.204293
Beaver       PA   80015  46.032619  52.637630  Romney  115157  69.483401   6.605012
Bedford      PA   21444  22.057452  76.986570  Romney   32189  66.619031  54.929118

1 个答案:

答案 0 :(得分:1)

Pandas在 getting setting (即更改)方法之间进行分隔。由于设置会修改您的原始数据框,因此Pandas希望更加谨慎。 loc是执行此操作的官方方法。像election[too_close].winner这样的语法只是获取的快捷方式(或“糖”),但不允许您设置