繁体   English   中英

将多个csv中的数据提取到python中的单个数据框中

[英]Extracting data from multiple csv's into a single dataframe in python

我在一个位置有多个 csv 文件。 我想从每个 csv 中提取两个字段并将它们全部附加到一个 CSV 中。 以下是我在每个 CSV 中的信息:

呵呵 ///n ojwiehu hello:18: ddjhhfudhfuhughfugh:12N: WIN 23459 Hondrus juerheuhrhk kji9 @! kfddhfhih9

这种信息存在于每个 csv 中,我需要提取两个字段:

1.) 18: 和 12N 之间的文本: 2.) WIN 和 Hondrus 之间的文本

输出将包含每个 csv 的 2 列附加到一个数据框中

有人可以帮我写剧本吗? 目前我正在运行以下代码以从其中一个 csv 中提取信息。 但是,我需要一个脚本来从所有 CSV 中提取信息并将它们附加到一个文件中。

with open("data.csv", "r", encoding='UTF-8') as fobj:
    text = fobj.read()
import re
a = re.compile(':18:(.*) :12N:')
b=re.compile('WIN(.*)HONDRUS')
z = a.findall(text)
k=b.findall(text)
print (z)
print (k)

Nitesh,你可以使用 glob 来获取一个数组中的所有文件,你可以循环遍历:

import glob
glob.glob('*.csv')
# ['1.csv',
# '2.csv',
# '3.csv',
# '4.csv']

这是您的脚本的修改版本,可以将它们全部放入列表中,然后您可以将其逐行写为 csv:

import glob
files = glob.glob('*.csv')
strings = []
for file in files:
  with open(file, "r", encoding='UTF-8') as fobj:
      text = fobj.read()
  import re
  a = re.compile(':18:(.*) :12N:')
  b=re.compile('WIN(.*)Hondrus')
  z = a.findall(text)
  k=b.findall(text)
  strings.append(z[0] + "," + k[0])

您可以像@oppressionslayer 建议的那样使用glob ,也可以改用sys 做这样的事情:

import sys
import pandas as pd

path = 'path_to_your_files'
files = [name for name in os.listdir(path)]

df = pd.Dataframe()

df = pd.concat((pd.read_csv(os.path.join(path,f),
 usecols=['18', '12N']) for f in files),
 ignore_index=True).reset_index()

不确定我是否正确获得了列名。 如果您能提供您的数据片段,将会很有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM