Pandas/Python,从多个csv中读取一行,合并成1个csv
Pandas/Python, Reading one row from multiple csv, and combining into 1 csv
我对 Python 和 Pandas 等(放轻松)还很陌生,到目前为止已经花了整整几天时间研究如何做到这一点,但没有成功。这是项目。
为 2 个不同的数据点创建了两个不同的 .CSV,每个数据点的当天总计 运行(以最后一行中该特定数据的当天总计结束)。例如,在 4_23_2022_Data1.csv
中,有列 Date
和 Data1
,在 4_23_2022_Data2.csv
中,有列 Date
和 Data2
,以及每个 .csv 中的最后一行包含当天的日期(显然)和该数据的总计(Data1 或 Data2 列)。
我想要完成的是:读取包含 2 组数据 .csv 的目录(多天),并创建一个包含 'Date'、[=29= 的组合 .CSV ], Data2' 列,Data1 和 Data2 的集合显示在该特定日期的相应行中。 [创建这些 .csv 的主系统最初无法将 Data1 和 Data2 合并到 1 个 .csv 中,因此我正在尝试创建一个可以快速扫描并执行此操作的程序。]
我最初的编码尝试只是浅尝辄止(不考虑任何循环):
df_1 = pd.read_csv('04_23_2022_Data1.csv', usecols = ['Date','Data1'])
df_2 = pd.read_csv('04_23_2022_Data2.csv', usecols = ['Date','Data2'])
##the last line of the day is 538
Data1_date = df1_read.iloc[538]['Date']
Data1_value = df1_read.iloc[538]['Data1']
Data2_date = df2_read.iloc[538]['Date']
Data2_value = df2_read.iloc[538]['Data2']
df_export = pd.DataFrame(columns = ['Date','Data1','Data2'])
df_export.at[1, 'Date'] = Data1_date
df_export.at[1, 'Data1'] = Data1_value
df_export.at[1, 'Data2'] = Data2_value
df_export.to_csv('Combo_of_Data1_and_Data2_per_Date.csv')
如有任何帮助或进一步指导,我们将不胜感激。再次,对于这个问题的完全新手攻击感到抱歉,但我正在尝试。 :)
您可以使用 glob.glob(). And use Python built-in functions iter() and zip() 循环访问文件夹中的文件,以成对循环访问文件。
# import
import glob
# define folder path
# look for files ending in '.csv' only
path = r'\data_folder\*.csv'
# loop through folder and store all relevant files as a list
file_paths = glob.glob(path)
# iterate through list to get elements in pairs
iterable_list = iter(file_paths)
# zip pairs of elements
iterable_list = zip(iterable_list, iterable_list)
# loop through list of files in pairs and do stuff...
for file_one, file_two in pair_elements(file_paths):
df_1 = pd.read_csv(file_one)
df_2 = pd.read_csv(file_two)
# do stuff
我对 Python 和 Pandas 等(放轻松)还很陌生,到目前为止已经花了整整几天时间研究如何做到这一点,但没有成功。这是项目。
为 2 个不同的数据点创建了两个不同的 .CSV,每个数据点的当天总计 运行(以最后一行中该特定数据的当天总计结束)。例如,在 4_23_2022_Data1.csv
中,有列 Date
和 Data1
,在 4_23_2022_Data2.csv
中,有列 Date
和 Data2
,以及每个 .csv 中的最后一行包含当天的日期(显然)和该数据的总计(Data1 或 Data2 列)。
我想要完成的是:读取包含 2 组数据 .csv 的目录(多天),并创建一个包含 'Date'、[=29= 的组合 .CSV ], Data2' 列,Data1 和 Data2 的集合显示在该特定日期的相应行中。 [创建这些 .csv 的主系统最初无法将 Data1 和 Data2 合并到 1 个 .csv 中,因此我正在尝试创建一个可以快速扫描并执行此操作的程序。]
我最初的编码尝试只是浅尝辄止(不考虑任何循环):
df_1 = pd.read_csv('04_23_2022_Data1.csv', usecols = ['Date','Data1'])
df_2 = pd.read_csv('04_23_2022_Data2.csv', usecols = ['Date','Data2'])
##the last line of the day is 538
Data1_date = df1_read.iloc[538]['Date']
Data1_value = df1_read.iloc[538]['Data1']
Data2_date = df2_read.iloc[538]['Date']
Data2_value = df2_read.iloc[538]['Data2']
df_export = pd.DataFrame(columns = ['Date','Data1','Data2'])
df_export.at[1, 'Date'] = Data1_date
df_export.at[1, 'Data1'] = Data1_value
df_export.at[1, 'Data2'] = Data2_value
df_export.to_csv('Combo_of_Data1_and_Data2_per_Date.csv')
如有任何帮助或进一步指导,我们将不胜感激。再次,对于这个问题的完全新手攻击感到抱歉,但我正在尝试。 :)
您可以使用 glob.glob(). And use Python built-in functions iter() and zip() 循环访问文件夹中的文件,以成对循环访问文件。
# import
import glob
# define folder path
# look for files ending in '.csv' only
path = r'\data_folder\*.csv'
# loop through folder and store all relevant files as a list
file_paths = glob.glob(path)
# iterate through list to get elements in pairs
iterable_list = iter(file_paths)
# zip pairs of elements
iterable_list = zip(iterable_list, iterable_list)
# loop through list of files in pairs and do stuff...
for file_one, file_two in pair_elements(file_paths):
df_1 = pd.read_csv(file_one)
df_2 = pd.read_csv(file_two)
# do stuff