【发布时间】:2019-02-12 21:12:04
【问题描述】:
我已经尝试并达到了可以读取文件夹中的多个文本文件,将它们填充到数据帧(一个数据帧)中,然后得出以下输出的地步,但我正在努力解决如何更改这一点格式化为所需的输出(如下图所示):
Name Col2 Col3 Freq File_Path
b h e 43 xyz/fgghh/something_1.txt
g j k 432 xyz/fgghh/something_1.txt
n q e 6 xyz/fgghh/something_1.txt
p p t 3 xyz/fgghh/something_1.txt
uu l x 1 xyz/fgghh/something_1.txt
x r u 23 xyz/fgghh/something_1.txt
b h e 43 xyz/fgghh/something_2.txt
ll e e 1 xyz/fgghh/something_2.txt
n e e 6 xyz/fgghh/something_2.txt
p e e 3 xyz/fgghh/something_2.txt
x y z 23 xyz/fgghh/something_2.txt
zz j k 432 xyz/fgghh/something_2.txt
b h e 43 xyz/fgghh/something.txt
g j k 432 xyz/fgghh/something.txt
n e e 6 xyz/fgghh/something.txt
p e e 3 xyz/fgghh/something.txt
u e e 1 xyz/fgghh/something.txt
yyyy y z 23 xyz/fgghh/something.txt
import pandas as pd
import os
import glob
dirpath= "......"
filenames = glob.glob("...../*.tsv")
list_of_dfs = [pd.read_csv(filename,sep='\t') for filename in filenames]
for dataframe, filename in zip(list_of_dfs, filenames):
dataframe['File_Path'] = filename
combined_df = pd.concat(list_of_dfs, ignore_index=True,sort=False)
out_df=combined_df.pivot_table(index='Name', columns='File_Path')
out_df.to_csv(os.path.join(dirpath,'myMerged_file_2.txt'), sep='\t', encoding='utf-8',quoting=0,index=False,index_label=None)
out_df=combined_df.pivot_table(index='Name', columns='File_Path')
这仍然不起作用。我只想要输出中的 Name 列和 Freq 值
我不确定如何在这个文件上使用 merge 或 concat 命令来使输出看起来像(期望的输出):
Name something.txt something_1.txt something_2.txt
yyyy 23
b 43 43 43
g 432 432
p 3 3 3
u 1
n 6 6 6
x 23 23
uu 1
zz 432
ll 1
【问题讨论】:
-
糟糕,这不是合并问题。您可以按照 Vaishali 的建议使用 pivot,也可以使用 groupby(在 File_Path 子字符串上)和 concat。请提供minimal reproducible example。
-
out_df=combined_df.pivot_table(index='Name', columns='File_Path') ...这仍然不起作用。我只想要输出中的 Name 列和 Freq 值。
-
就像我已经说过的,请提供minimal reproducible example,作为对您问题的编辑,可以将其复制粘贴到终端中。具体来说,将数据设为文本而不是图像(我无法将图像粘贴到终端中)。
-
好的.. 做了那个编辑。希望这就是你要找的