尝试在Python中使用Pandas删除逗号和美元符号

2lpgd968  于 2023-02-28  发布在  Python
关注(0)|答案(6)|浏览(205)

特灵从列中删除逗号和美元符号。但是当我这样做时,表将它们打印出来,并且仍然保留它们。是否有其他方法可以使用panda函数删除命令和美元符号?我无法在API文档中找到任何内容,或者可能我找错了地方

import pandas as pd
    import pandas_datareader.data as web

players = pd.read_html('http://www.usatoday.com/sports/mlb/salaries/2013/player/p/')

df1 = pd.DataFrame(players[0])

df1.drop(df1.columns[[0,3,4, 5, 6]], axis=1, inplace=True)
df1.columns = ['Player', 'Team', 'Avg_Annual']
df1['Avg_Annual'] = df1['Avg_Annual'].replace(',', '')

print (df1.head(10))
eanckbw9

eanckbw91#

必须根据http://pandas.pydata.org/pandas-docs/stable/text.html访问str属性

df1['Avg_Annual'] = df1['Avg_Annual'].str.replace(',', '')
df1['Avg_Annual'] = df1['Avg_Annual'].str.replace('$', '')
df1['Avg_Annual'] = df1['Avg_Annual'].astype(int)

交替地;

df1['Avg_Annual'] = df1['Avg_Annual'].str.replace(',', '').str.replace('$', '').astype(int)

如果你想把打字的时间放在可读性之上。

5gfr0r5j

5gfr0r5j2#

无耻地从this answer中窃取... * 但是 *,这个答案只是改变了一个角色,并没有完成酷:因为它需要一个字典,所以你可以一次替换任意数量的字符,也可以替换任意数量的列。

# if you want to operate on multiple columns, put them in a list like so:
cols = ['col1', 'col2', ..., 'colN']

# pass them to df.replace(), specifying each char and it's replacement:
df[cols] = df[cols].replace({'\$': '', ',': ''}, regex=True)

@shivsn抓到你需要使用regex=True;您已经了解了replace(但也没有尝试在多列上使用它,或者同时在美元符号和逗号上使用它)。
这个答案只是简单地把我从其他人那里找到的细节拼在一个地方给那些像我一样的人(例如noobs to python and pandas)。希望它能有所帮助。

cvxl0en2

cvxl0en23#

@bernie的回答对你的问题很有帮助。下面是我对Pandas载入数值数据这一普遍问题的看法。
通常数据源是直接使用的报表,因此会出现额外的格式,如%、千位分隔符、货币符号等,所有这些都对阅读有用,但会给默认解析器带来问题,我的解决方案是将列类型转换为string。逐个替换这些符号,然后将其转换回适当的数字格式。拥有一个只保留[0-9.]的样板函数是很诱人的,但是会导致千位分隔符和小数点互换的问题,这是我的代码,我把它 Package 成一个函数,然后根据需要应用。

df[col] = df[col].astype(str)  # cast to string

# all the string surgery goes in here
df[col] = df[col].replace('$', '')
df[col] = df[col].replace(',', '')  # assuming ',' is the thousand's separator in your locale
df[col] = df[col].replace('%', '')

df[col] = df[col].astype(float)  # cast back to appropriate type
ukdjmx9f

ukdjmx9f4#

这对我很有效。|“系指或:

df['Salary'].str.replace('\$|,','', regex=True)
06odsfpq

06odsfpq5#

我用这个逻辑

df.col = df.col.apply(lambda x:x.replace('$','').replace(',',''))
g52tjvyc

g52tjvyc6#

当我遇到这个问题的时候,我就是这样解决的。

df['Salary'] = df['Salary'].str.replace("$",'').astype(float)

相关问题