关于.loc和设置copywarning似乎有很多混淆。就我而言,我无法从现有的问题中找到解决这种情况的办法。你知道吗
目前,我有一个DF,我想过滤切片,然后设置值,这些切片传播到原来的。所以我不想要副本,我想要我修改的视图。你知道吗
目前它的工作原理是:
A0.loc[(A0['Pääkategoria'].isnull()) & (A0.Määrä < 0) & (A0.SaajaMaksaja.str.contains('|'.join(catfilter))), 'Pääkategoria'] = cat1
当有很多过滤器需要填满时,这将变得相当复杂。是否可以“增量”获取我处理的视图,然后将视图的设置值传播到原始的DFA0
?你知道吗
现在我有以下原因:SettingWithCopyWarning
A1 = A0.loc[(A0['Pääkategoria'].isnull() & (A0.Määrä < 0))]
A1.loc[A1.SaajaMaksaja.str.contains('|'.join(catfilter)), 'Pääkategoria'] = cat1
所以看起来A1
只是一个拷贝,而不是一个片段。多次切片将允许我针对不同的情况进行切片(例如,>;0)
在我看来,一个更具可读性的解决方案,不应该导致
SettingWithCopyWarning
,是计算部分掩码作为一个单独的步骤。你知道吗然后在
pd.DataFrame.loc
中使用&
运算符一次:正如您所注意到的,链接
loc
索引器可能会引发SettingWithCopyWarning
。但是这种链式运算在计算布尔级数的交集时是不必要的。你知道吗在导入熊猫(作为pd)后尝试此项
试试看
相关问题 更多 >
编程相关推荐