Pandas SettingWithCopyWarning有字符串和lambda的问题

时间:2017-11-08 08:28:04

标签: python python-2.7 pandas lambda

执行以下代码时,我收到此错误:

输入

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,因为我发现它的可读性较差。这可能是问题吗?

0 个答案:

没有答案