
[英]Extracting information from multiple JSON files to single CSV file in 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.