从.csv文件中提取数值

时间:2019-09-29 13:00:40

标签: python regex pandas dataframe

我有一个数据框,其中有一列路径名。我可以使用以下路径访问这些路径:

for i, p in enumerate(df['path']):

但是,我现在正在寻找从每个输出文件中提取值的方法。

csv文件如下:

# some values 
# some values : some values
# some values : some values
# some values : some values
# some string : the value I want
# some string : some values

是否可以提取此值并将其插入到我的数据框中?

我相信正则表达式可以解决问题。我只是不确定确切的方法。我有一些模板代码,如下所示:

if re.match(r"something", p):
        df = pd.read_csv(p)
        df.iloc[i, value_column] = the value I want

2 个答案:

答案 0 :(得分:0)

以下是使用内置split从text / csv中提取值的解决方案:

def get_value(string):
    array = string.split(": ")  # maybe without the white space
    return array[0] if len(array) == 1 else array[1]

get_value('some values')
# 'some values'
get_value('some string : the value I want')
# 'the value I want'

或者,使用正则表达式

re.sub(r'.*\:\s*(.*)', r'\1', 'some values')
# 'some values'
re.sub(r'.*\:\s*(.*)', r'\1', 'some string : the value I want')
# 'the value I want'

答案 1 :(得分:0)

在更清晰的环境中被问到这个问题时,我得到了帮助。 用于csv文件中的一行。

if re.match('# some string\s*:\s*([^\n]+)', line):
                    number = re.match('# some string\s*:\s*([^\n]+)', line).group(1)