我想将整个列设置为单个字符串值。这样做的时候,我得到了(曾经非常流行)SettingWithCopy
。在发布关于这个问题的文章之前,我尝试过搜索。在
import pandas as pd
import numpy as np
dfp = pd.DataFrame({'A' : [1,21,8,44,np.NaN,6,75,8,44,999],
'B' : [1,1,3,5,0,0,np.NaN,9,np.NaN,0],
'C' : ['AA1233445','AA1233445', 'rmacy','Idaho Rx','Ab123455','TV192837','RX','Ohio Drugs','RX12345','USA Pharma'],
'D' : [123456,123456,1234567,12345678,12345,12345,12345678,123456789,1234567,np.NaN],
'E' : ['Assign','Assign','Hello','Ugly','Appreciate','Undo','Testing','Unicycle','Pharma','Unicorn',]})
print(dfp)
new_df_to_show_copy = dfp.loc[(dfp['A']>100) |(dfp['E']=='Unicorn')]
new_df_to_show_copy['Reason'] = 'what is with the copy warning'
现在我可以用
^{pr2}$我知道我可以用pd.options.mode.chained_assignment = None
来摆脱警告,但我觉得这是“作弊”。我正在查看文档,但是找不到一种不添加.copy()
或取消警告的最小方法来将整个列设置为单个值。最好的办法是什么?在
今天早些时候我正在处理一个类似的需求,我遇到了^{} 。我没有使用
pd.options.mode.chained_assignment = None
就消除了复制警告。我的解决方案是:assign
将保留数据帧的副本,并且没有inplace=True
参数。所以重新分配价值对我很有用。在相关问题 更多 >
编程相关推荐