当前位置: 首页 > 面试题库 >

合并具有与数据框相似的名称约定的文件

晏华奥
2023-03-14
问题内容

我有一个存储在目录中的文件列表,例如

filenames=[
        abc_1.txt
        abc_2.txt
        abc_3.txt

        bcd_1.txt
        bcd_2.txt
        bcd_3.txt
       ]

pattern=[abc]

我想将多个txt文件读入一个数据帧,以便所有以abc开头的文件都在一个数据帧中,然后所有的所有文件名都以bcd等开头。

我的代码:

file_path = '/home/iolie/Downloads/test/'
filenames = os.listdir(file_path)


prefixes = list(set(i.split('_')[0] for i in filenames))

for prefix in prefixes:
    print('Reading files with prefix:',prefix)
    for file in filenames: 
        if file.startswith(prefix):
            print('Reading files:',file)
            list_of_dfs = [pd.concat([pd.read_csv(os.path.join(file_path, file), header=None) ],ignore_index=True)]
            final = pd.concat(list_of_dfs)

这段代码不会追加,但会覆盖数据框。有人可以帮忙吗?


问题答案:

比创建任意数量的未链接数据帧更好的主意是输出一个 数据帧字典 ,其中的键是前缀:

from collections import defaultdict

filenames = ['abc_1.txt', 'abc_2.txt', 'abc_3.txt',
             'bcd_1.txt', 'bcd_2.txt', 'bcd_3.txt']

dd = defaultdict(list)

for fn in filenames:
    dd[fn.split('_')[0]].append(fn)

dict_of_dfs = {}
for k, v in dd.items():
    dict_of_dfs[k] = pd.concat([pd.read_csv(fn) for fn in v], ignore_index=True)


 类似资料:
  • 问题内容: 我可以在其他具有相同列名的数据框的右边追加一个数据框吗 问题答案: 您可以像这样连接两个数据框。 如果您正在寻找联盟,则可以执行以下操作。 Spark 2.0,已重命名为

  • 我有两个数据框: 我希望对 df2 执行逐行运算,我将 df2 中的每一列与 df1 中的相应行相乘,然后执行求和。 例如,对于df2的第1行,我希望计算: 同时排除不匹配(df1中的行)或具有NAs的列。 我在df1中有几千行,在df2中有数千行和列。 非常感谢任何帮助!! PS。我在Perl中使用哈希实现了这一点,并使用system()调用在Rmarkdown文档中执行这些计算。为了保持它的完

  • 问题内容: 我想知道是否可以创建多个具有相似名称的文件,而不会覆盖当前文件。 例如:如果我有一个文件:下次创建时xyz.txt应该是:xyz(1).txt 因此,如果我重新运行该程序,则当前文件不会被覆盖。我已经尝试过,如果带有标志变量的条件将数字添加为文件名的前缀。 我想知道是否有任何Java命令来避免覆盖现有文件。 问题答案: 我想知道是否有任何本地Java命令停止覆盖[并将数字添加到文件名中

  • 这是我想做的:将用户连接到他们观看的视频,就像用户- 我是如何做到的: CSV文件有2列,标题为用户和视频。用户下面是一个标识每个用户的数字,视频下面是一个标识每个视频的数字。一个用户对一个视频。有时用户的名字会在列表中再次出现在不同的视频中。有时视频编号会再次出现,因为它是由不同的用户观看的。 但是,这将返回关系用户在每个关系中查看1个视频。因此,每个用户和视频都有多个节点。 我想做的:创建更多

  • 问题内容: 我肯定在这里错过了一些简单的事情。尝试在熊猫中合并具有相同列名的两个数据框,但右侧的数据框具有一些左侧没有的列,反之亦然。 我试着加入外部联接: 但这产生了: 我还指定了一个要连接的单列(例如on =“ id”),但是它复制了除“ id”以外的所有列,例如attr_1_x,attr_1_y,这并不理想。我也将整个列列表(有很多)传递给了“ on”: 产生: 我想念什么?我想获得一个带有

  • 我有一个数据框架,我想将其编写为具有特定名称的单个json文件。我在下面试过了 感谢有人能提供解决方案。