python pandas删除括号和,df值

2024-09-30 12:28:23 发布

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

我有如下数据帧:

column1    column2     column3    column4
6,546      543,254,32  (443,326)  (32,000)
4,554      432,885     (88,974)    77,332
n.a        -           5,332       -
...        ...        ...         ...

# this df stretches for over 500 rows, and all columns could potentially have 
# values within brackets, 'n.a', '-'

我遇到的问题是将( , )中的所有值替换为-443326ie,去掉括号和逗号

我知道我可以做df.replace('n.a', numpy.nan, inplace=True),如果值匹配,这将相应地替换它们。在

但是,df.replace('(', numpy.nan, inplace=True)的相同方法不起作用。在

我尝试使用循环来解决我的问题:

^{pr2}$

这似乎有效,但它给了我一个警告信息:

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

怎么回事


Tags: 数据numpytruedfvaluenanthisreplace
3条回答

这里有一个稍微不同的方法:

In [89]: df.replace(r'[^\d\.]+', '', regex=True).apply(pd.to_numeric, errors='coerce')
Out[89]:
   column1     column2  column3  column4
0   6546.0  54325432.0   443326  32000.0
1   4554.0    432885.0    88974  77332.0
2      NaN         NaN     5332      NaN

链式更换。在

df['column_name'] = (df.loc[:, 'column_name'].replace('[)]', '', regex=True)
                            .replace('[(]', '-', regex=True).astype(float))
d = {
    ',': '',
    '\(([\d,]+)\)': r'-\1',
    'n.a': 'nan',
    '^-$': 'nan',
}

df.replace(d, regex=True).astype(float)

   column1     column2   column3  column4
0   6546.0  54325432.0 -443326.0 -32000.0
1   4554.0    432885.0  -88974.0  77332.0
2      NaN         NaN    5332.0      NaN

如果您只想解决(stuff)问题

^{pr2}$

相关问题 更多 >

    热门问题