执行以下代码时,我收到此错误:
输入
df['col1'] = df['col1'].apply(lambda x: float(x.replace('/', '')))
输出
/..somepath.../lib/python2.7/site-packages/pandas/core/indexing.py:601: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self.obj[item_labels[indexer[info_axis]]] = value
关于这个主题有一些类似的问题,例如this,但是它们都没有包含更复杂的问题,例如通过lambda
操纵列字符串。此外,在那里的答案中,一旦使用.loc
,问题似乎是固定的,而在这里它仍然存在。
我浏览了文档,似乎我需要使用.loc
,所以我做了(请参阅下面的代码),但我的问题仍然存在。
df.loc[:,('col1')] = df.loc[:,('col1')].apply(lambda x: float(x.replace('/', '')))
你能否告诉我这是否是我遇到的另一个问题以及如何解决这个问题,以便我能够更好地向前发展?
编辑:上一个代码
下面是df初始化和一些额外的代码行之前的问题
d = df[df['col0'].str.contains('text')]
if not df.empty:
我通常倾向于不对所有.loc
操作使用DataFrame
,因为我发现它的可读性较差。这可能是问题吗?