删除数据帧中浮点的双引号

2024-10-03 21:35:15 发布

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

我有一些选择链数据:

Contract Name,Last Trade Date,Strike,Last Price,Bid,Ask,Change

AMZN200605P03320000,2020-05-28 3:24PM EDT,3320.0,900.65,876.0,893.5,+900.65

AMZN200605P03500000,2020-05-28 3:51PM EDT,3500.0,1099.55,1055.5,1073.5,"+1,099.55"

条目-“+1099.55”在数据中似乎是一个坏条目,因为没有任何其他类似的记录,我需要在插入SQLDB之前对其进行清理。我试过几种不同的方法,但没有一种有效。如有任何见解,将不胜感激:

optionsChainPuts['Change'] = optionsChainPuts['Change'].map(lambda x: x.lstrip('\"+').rstrip('\"'))
optionsChainPuts['Change'] = optionsChainPuts['Change'].astype(str).str.replace('\D', '')
optionsChainPuts['Change'] = optionsChainPuts['Change'].astype(str).map(lambda x: x.replace('"', ''))

多谢各位


Tags: 数据lambdanamemapdate条目changereplace
2条回答

是逗号引起了问题。一个选项是在逗号处拆分它并连接值

>>> val = "+1,099.55"
>>> val = val.split(",")
>>> num = float(val[0] + val[1])
>>> num
1099.55

希望有帮助

问题是带有逗号和引号的数字

使用locale将欧洲语转换为英语

代码

from io import StringIO
import pandas as pd
import locale

s = '''Contract Name,Last Trade Date,Strike,Last Price,Bid,Ask,Change
AMZN200605P03320000,2020-05-28 3:24PM EDT,3320.0,900.65,876.0,893.5,+900.65
AMZN200605P03500000,2020-05-28 3:51PM EDT,3500.0,1099.55,1055.5,1073.5,"+1,099.55"'''

df = pd.read_csv(StringIO(s))

# set local to English
locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) 

# Convert column to float
df['Change'] = df['Change'].apply(lambda x: locale.atof(x))

print(df['Change'])

输出

Name: Change, dtype: object
0     900.65
1    1099.55
Name: Change, dtype: float64

相关问题 更多 >