将单个组中的 pandas 个数据帧迭代附加到 h5 文件
Iteratively append pandas dataframes in a single group to h5 file
我有一个小脚本,用于从用户输入目录读取 csv 文件并将它们转换为单个 HDF5 文件:
path = input('Insert the directory path:')
file_list = []
for file in glob.glob(path):
file_list.append(file)
for filename in file_list:
df = pd.read_csv(filename)
key = Path(filename).resolve().stem
with pd.HDFStore('test.h5') as store:
store.append(key=key, value=df, format='table', data_columns=df.columns)
目前正在做的是将每个文件(以数据帧格式)附加为一个组。如果我在 vitables 中打开它,它看起来像这样:
此外,如果我 运行 脚本再次使用另一个目录,它将继续将新组(每个文件一个)附加到根组。
我想要的是每次我 运行 脚本时,它都会将文件组附加到根目录中的新组(主题)中。像这样:
我觉得这可能与我传入 store.append
的密钥有关,因为现在它使用文件名作为密钥。我能够手动传递密钥并附加所需的数据帧,但这不是我想要的最终目标。
一些建议会很棒!谢谢
import glob
import os
import pandas as pd
# inputs
path = input('Insert the directory path:')
group = input('Insert a group name: ')
# create a list of file paths
file_list = [file for file in glob.glob(path)]
# dict comprehension to create keys from file name and values from the csv files
dfs = {os.path.basename(os.path.normpath(filename)).split('.')[0]: pd.read_csv(filename) for filename in file_list}
# loop though the dataframes
for k,df in dfs.items():
# store the HDF5 file
store = pd.HDFStore('test.h5')
# append df to a group and assign the key with f-strings
store.append(f'{group}/{k}', df, format='table', data_columns=df.columns)
# close the file
store.close()
我运行上面的代码对sample
组和sample1
组两次,下面是结果:
import h5py
# load file
f = h5py.File('test.h5', 'r')
print(f['sample'].keys())
print(f['sample1'].keys())
f.close()
<KeysViewHDF5 ['untitled', 'untitled1']>
<KeysViewHDF5 ['untitled2', 'untitled3']>
我有一个小脚本,用于从用户输入目录读取 csv 文件并将它们转换为单个 HDF5 文件:
path = input('Insert the directory path:')
file_list = []
for file in glob.glob(path):
file_list.append(file)
for filename in file_list:
df = pd.read_csv(filename)
key = Path(filename).resolve().stem
with pd.HDFStore('test.h5') as store:
store.append(key=key, value=df, format='table', data_columns=df.columns)
目前正在做的是将每个文件(以数据帧格式)附加为一个组。如果我在 vitables 中打开它,它看起来像这样:
此外,如果我 运行 脚本再次使用另一个目录,它将继续将新组(每个文件一个)附加到根组。
我想要的是每次我 运行 脚本时,它都会将文件组附加到根目录中的新组(主题)中。像这样:
我觉得这可能与我传入 store.append
的密钥有关,因为现在它使用文件名作为密钥。我能够手动传递密钥并附加所需的数据帧,但这不是我想要的最终目标。
一些建议会很棒!谢谢
import glob
import os
import pandas as pd
# inputs
path = input('Insert the directory path:')
group = input('Insert a group name: ')
# create a list of file paths
file_list = [file for file in glob.glob(path)]
# dict comprehension to create keys from file name and values from the csv files
dfs = {os.path.basename(os.path.normpath(filename)).split('.')[0]: pd.read_csv(filename) for filename in file_list}
# loop though the dataframes
for k,df in dfs.items():
# store the HDF5 file
store = pd.HDFStore('test.h5')
# append df to a group and assign the key with f-strings
store.append(f'{group}/{k}', df, format='table', data_columns=df.columns)
# close the file
store.close()
我运行上面的代码对sample
组和sample1
组两次,下面是结果:
import h5py
# load file
f = h5py.File('test.h5', 'r')
print(f['sample'].keys())
print(f['sample1'].keys())
f.close()
<KeysViewHDF5 ['untitled', 'untitled1']>
<KeysViewHDF5 ['untitled2', 'untitled3']>