更改数据帧行SUB的列

2024-09-30 02:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的数据帧:

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,我认为我做作业的方式是正确的


Tags: textdataframedffoovalue方式bareur
1条回答
网友
1楼 · 发布于 2024-09-30 02:35:43

您需要^{}

df_amounts = df.loc[df.text.str.contains(r"(EUR|€)?\d+(EUR|€)?")].copy()
df_amounts['text'] = df_amounts.text.str.strip("EUR€")
print (df_amounts)
  text    x
1   10  2.2
2    5  3.3

如果稍后修改df_amounts中的值,您将发现修改不会传播回原始数据(df),并且不会发出警告

相关问题 更多 >

    热门问题