[在此处输入图像说明] [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
答案 0 :(得分:1)
Pandas在 getting 和 setting (即更改)方法之间进行分隔。由于设置会修改您的原始数据框,因此Pandas希望更加谨慎。 loc
是执行此操作的官方方法。像election[too_close].winner
这样的语法只是获取的快捷方式(或“糖”),但不允许您设置。