环境:Python 3.6,Pandas
我有一行代码:
df['column_1'][df['column_2'].str.contains('keyword')] = df['column_3']
该代码旨在查看column_2
,如果keyword
存在,则将column_1
字符串设置为column_3
中的内容。它工作正常,并做我期望的。但它会抛出this警告:A value is trying to be set on a copy of a slice from a DataFrame
。
根据我改为的文档和示例:
df.loc[:,('column_1', df['column_2'].str.contains('keyword'))] = df['column_3']
但是,此代码抛出:ValueError: setting an array element with a sequence
。
我认为错误是元组的第二个元素的结果。还有另一个例子here使用相同的结构(我可以在没有错误的情况下运行它)。还有其他几个类似的问题,但没有一个问题涉及对元组中列的搜索。所以这缩小到如何以一种在元组中工作的方式编写df['column_2'].str.contains('keyword')
?
或者还有其他我想念的东西?
更新
经过更多研究后,我可能会通过
设置column_1
df['column_1'] = np.nan #numpy NaN
似乎列的构造方式也会导致此类错误。作为NaN的dtype是float64
。我已经尝试重铸.astype(str)
而没有任何改变。