gpt4 book ai didi

python获取并处理csv中某些字符之间的值

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:32 24 4
gpt4 key购买 nike

其实和pandas有关,我在一个csv文件中有几条记录(大约40000条),其中一列值为market_value,例如:

原始记录

player_id,player_name,club,age,market_value,date
3713,massimo-maccarone,UC Sampdoria,31,£2.55m,2011-01-10
3713,massimo-maccarone,UC Sampdoria,31,£1.70m,2011-06-21
3713,massimo-maccarone,FC Empoli,32,£850k,2012-01-01
3713,massimo-maccarone,FC Empoli,32,£680k,2012-06-15
...

在这里,我想提取market_value的值并将其转换为某种格式,例如

player_id,player_name,club,age,market_value,date
3713,massimo-maccarone,UC Sampdoria,31,2550000,2011-01-10
3713,massimo-maccarone,UC Sampdoria,31,1700000,2011-06-21
3713,massimo-maccarone,FC Empoli,32,850000,2012-01-01
3713,massimo-maccarone,FC Empoli,32,680000,2012-06-15
...

这意味着我想将其转换为数字形式,然后导入到数据库。我已经编写了一个正则表达式方法来实现这一点,如下所示:

import re

def regex_format(test_str):
if re.search('^£.+k$',test_str):
return float(re.search('^£(.+)k$',test_str).group(1))*1000
elif re.search('^£(.+)m$',test_str):
return float(re.search('^£(.+)m$',test_str).group(1))*1000000
else:
return 0.0

它适用于这些字符串,但是当我尝试通过 pandas 将其应用到 csv 文件中时,我遇到了问题,我的代码如下:

import pandas as pd
import currency_format

df=pd.read_csv('the_market_value_o.csv')
df['market_value']=currency_format.regex_format(df['market_value'])
print df

我遇到了一个异常,例如:

TypeError:expected string or buffer

然后我尝试通过以下方法将系列转换为字符串:

df['market_value'].astype(basestring)

但它不起作用。

顺便说一句,我的 python 版本是 Python 2.7.12::Anaconda 4.0.0(64 位) 和 pandas 0.18.0

感谢任何帮助,谢谢。

最佳答案

我认为问题在于df[market_value]是一系列(字符串)而不是单例字符串。将其视为数据的切片/列——就像值列表一样。因此,请尝试以下操作:

df['market_value'].map(currency_format.regex_format)

这个答案here有更多这样的功能/示例。

关于python获取并处理csv中某些字符之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com