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

2024-10-03 06:21:47 发布

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

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

哈///n ojwiehu你好:18:ddjhfudhfuhughfugh:12N: 胜23459洪都拉斯juerheuhrhk kji9@!kfddhfhih9型

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

1.)文本介于:18:和:12N: 2.)温和洪都拉斯之间的文本

输出将包含来自每个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)

Tags: 文件csvtext文本re信息printcompile
2条回答

您可以使用glob像@suppressionslayer建议的那样,也可以使用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()

不知道我是否得到正确的列名。如果您能提供您的数据片段,这将是很有帮助的

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])

相关问题 更多 >