将多个txt文件读取到多个数据帧,然后将所有数据帧连接到一个

时间:2018-01-02 15:30:27

标签: python dataframe multiple-files

我只能找到将多个txt文件读取到一个数据帧的主题。但我希望将它们作为不同的数据帧( df1, df2, ... )存储,然后将它们连接到一个数据帧。有没有快速的方法来做到这一点?更好的是,最快的方法是什么?这对我来说是一个重点。不应使用数据名称,它们在要查找的文件末尾具有格式(year.month.day.hour.minute.second)无txt。先感谢您。 现在我只是阅读并放入一个文件:

f in glob.glob("path_in_dir"):
    df = pd.read_table(f, delim_whitespace=True, 
               names=('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'),
               dtype={'A': np.float32, 'B': np.float32, 'C': np.float32,
                      'D': np.float32,'E': np.float32, 'F': np.float32,
                      'G': np.float32,'H': np.float32})

    all_data = all_data.append(df,ignore_index=True)

3 个答案:

答案 0 :(得分:1)

重新考虑这种方法:我想将它们作为不同的数据帧(df1,df2 ...)存储,然后将它们连接起来。而是将每个相似的数据帧保存在更大的容器中,如列表或字典。这可以避免使用许多(可能是数百个)单独的对象充斥您的全局环境。

下面只有两个要维护的对象:1) df_dict ,其中键为 df1 df2 ,...和2) all_data ,其中所有数据框元素都堆叠在一起。

df_dict = {}

for i, f in enumerate(glob.glob("path_in_dir")):
    df_dict['df'+str(i+1)] = pd.read_table(f, delim_whitespace=True, 
                               names=('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'),
                               dtype={'A': np.float32, 'B': np.float32, 'C': np.float32,
                                      'D': np.float32,'E': np.float32, 'F': np.float32,
                                      'G': np.float32,'H': np.float32})
# MASTER COMPILED DATAFRAME
all_data = pd.concat(df_dict.values(), ignore_index=True)

# FIRST THREE DATAFRAMES
df_dict['df1'] = ...
df_dict['df2'] = ...
df_dict['df3'] = ...

答案 1 :(得分:0)

您可以尝试以下方式:

while True:
        exit_input = input("Are you sure you want to exit? Enter Y/N (YES/NO): ")
        if (exit_input == 'Y'):
            print("\nYou have successfully exited the program. Thank you! Have a great day! ")
            break
        elif (exit_input == 'N'):
            run = menu()
            break
        else:
            print("Invalid Input\n")

答案 2 :(得分:0)

我没有使用确切的数据结构,而是创建了几个虚拟文件来执行用例。

import pandas as pd
import glob

datasets = []
for f in glob.glob("<Path to folder>"):
    df = pd.read_csv(f, sep=',', names=('Col1', 'Col2', 'Col3', 'Col4'), dtype={'Col1':str, 'Col2':int, 'Col3':float, 'Col4':str})
    datasets.append(df)
all_data = pd.concat(datasets, ignore_index=True)
print(all_data.head())

您可以操作此代码以使代码正常工作。

谢谢