我有一个如下所示的数据帧:
import pandas as pd
df = pd.DataFrame(data={'text':['foo', '10€', 'EUR5', 'bar'], 'x':[1.1, 2.2, 3.3, 4.4]})
text x
0 foo 1.1
1 10€ 2.2
2 EUR5 3.3
3 bar 4.4
我通过以下方式使用正则表达式对其进行子集划分:
df_amounts = df.loc[df.text.str.contains(r"(EUR|€)?\d+(EUR|€)?")]
text x
1 10€ 2.2
2 EUR5 3.3
从现在起,我只使用子集,不关心原始df(实际上我不想更改它!)。这就引出了这样一个问题:当我执行以下操作时,是否可以忽略警告(并可能将其关闭):
df_amounts.loc[:, 'text'] = df_amounts.text.str.strip("EUR€")
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
我已经阅读了documentation,我认为我做作业的方式是正确的
您需要^{} :
如果稍后修改
df_amounts
中的值,您将发现修改不会传播回原始数据(df
),并且不会发出警告相关问题 更多 >
编程相关推荐