使用glob后如何将数据框合并到一个csv文件中?
Posted
技术标签:
【中文标题】使用glob后如何将数据框合并到一个csv文件中?【英文标题】:How to merge data frame into one csv file after using glob? 【发布时间】:2019-07-18 09:24:36 【问题描述】:我曾尝试使用 glob 处理几个 csv 文件,例如:
import glob
import pandas as pd
import numpy as np
import csv
# Read all csv files with same file name in the folder
filenames = sorted(glob.glob('./16_2018-02*.csv'))
for f in filenames:
df = pd.read_csv(f, names=['Date','RSSI','Data','Code'],
index_col=None)
# Slicing information
df["ID"] = df["Data"].str.slice(0,2)
df["X"] = df["Data"].str.slice(2,4)
# Save the output data to csv with different name
df.to_csv(f'f[:-4]-train.csv', index=False)
在代码的最后,我曾经将每个数据框保存到一个新的不同名称的 csv 文件中。考虑到现在我有这么多 csv 数据可以使用,我想在不先写入每个 csv 文件的情况下将它们连接起来。我该怎么做?
原始数据集前 5 行:
Date RSSI Data Code
2018-02-20T00:00:20.886+09:00 -99 1068ffd703d101ec77f425ea98b201 F2D5
2018-02-20T00:00:21.904+09:00 -95 103cffbc032901ee77f49dea98b301 F2D5
2018-02-20T00:00:22.415+09:00 -97 103cffbc032901ee77f49dea98b301 F2D5
2018-02-20T00:00:46.580+09:00 -96 10fdfda803ff01f477f49dfd98cb03 F2D1
2018-02-20T00:00:48.593+09:00 -96 101bfed3037401f577f49dfe98cd03 F2D6
之后:
Date RSSI Data Code ID X
2018-02-20T00:00:20.886+09:00 -99 1068ffd703d101ec77f425ea98b201 F2D5 16 0.065384
2018-02-20T00:00:21.904+09:00 -95 103cffbc032901ee77f49dea98b301 F2D5 16 0.065340
2018-02-20T00:00:22.415+09:00 -97 103cffbc032901ee77f49dea98b301 F2D5 16 0.065340
2018-02-20T00:00:46.580+09:00 -96 10fdfda803ff01f477f49dfd98cb03 F2D1 16 0.065021
2018-02-20T00:00:48.593+09:00 -96 101bfed3037401f577f49dfe98cd03 F2D6 16 0.065051
【问题讨论】:
您能否提供几个样本数据集以及您希望结果是什么样的? @IanThompson 数据集包含 4 列('Date'、'RSSI'、'Data'、'Code')的许多行。在此过程中,我添加了 2 个新列(ID,X),然后所有文件都单独保存在 csv 文件中(例如,从文件夹中的 10 个数据集,它将被保存到 10 个 csv 输出文件中)... @IanThompson ..虽然现在我想要的结果不是几个 csv 文件,而是一个连接一个标题的 csv 文件。 你能把它的样子贴出来吗?例如,csv
s 中的两个的前 5 行是什么样的?以代码格式的文本发布它们,以便我们可以直接复制它们并更快地为您提供答案。
@IanThompson 在问题中添加。
【参考方案1】:
试试下面的代码[将所有文件附加到一个文件]:
filenames = sorted(glob.glob('./16_2018-02*.csv'))
appended_data=[] #create a list
for f in filenames:
df = pd.read_csv(f, names=['Date','RSSI','Data','Code'],
index_col=None)
# Slicing information
df["ID"] = df["Data"].str.slice(0,2)
df["X"] = df["Data"].str.slice(2,4)
appended_data.append(df) #append to the list
appended_data = pd.concat(appended_data, axis=1) #concat them together
#remove axis=1 if need to append vertically
appended_data 现在是一个数据框,所有文件都附加在一起发布,您可以将其导出到 csv/excel。
【讨论】:
我尝试不使用“axis=1”,因为我需要将其垂直附加,但出现此错误:ValueError:计划形状未对齐。试图找出原因,因为没有。列数应该相同。 @npm 检查这个:***.com/questions/26226343/… 相反,我尝试使用较小的数据集,您的解决方案有效,谢谢!我可能只需要稍后检查每个数据集。以上是关于使用glob后如何将数据框合并到一个csv文件中?的主要内容,如果未能解决你的问题,请参考以下文章