通过索引设置CopyWarning pandas设置

2024-10-01 07:29:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过索引选择来设置数据帧中列的值。在

myindex = (df['city']==old_name) & (df['dt'] >= startDate) & (df['dt'] < endDate)
new_name = 'Boston2
df['proxyCity'].ix[myindex ] = new_name

在上面,我想在myindex中指定proxyCity列中的值Boston2

^{pr2}$

在不引入文档中概述的问题的情况下,如何正确地执行我想做的事情。在

这个链接using pandas to select rows conditional on multiple equivalencies中的答案似乎就是我实现它的方式。在

我不知道怎样做才是正确的。在


Tags: 数据name文档citydfnewdtold
2条回答

您可以使用mask

mask = (df.city == old_name) & (df.dt >= startDate) & (df.dt < endDate)
new_name = 'Boston2
df.loc[:, 'proxyCity'] = df.proxyCity.mask(mask, new_name)
# Or
df.proxyCity.mask(mask, new_name, inplace=True)

为了避免双重索引,请更改

df['proxyCity'].ix[myindex ] = new_name

^{pr2}$

它更有效(更少的__getitem__函数调用),并且在大多数情况下,将消除SettingWithCopyWarning。在

但是请注意,如果df是另一个数据帧的子数据帧,则有可能发出SettingWithCopyWarning 即使使用df.loc[...] = new_name。在这里,Pandas警告说修改df不会影响其他数据帧。 如果这不是您的意图,那么可以安全地忽略SettingWithCopyWarning。有关使SettingWithCopyWarning静音的方法,请参见this post。在

相关问题 更多 >