python - 使用python或pandas合并多个文件

标签 python pandas dataframe

我有多个文件(最多 20 个或更多)要根据特定条件合并。下面是三个文件示例:

File1           
ID  Type    Condition   Colour
113884  M   Good    Green
123456  M   Good    Blue
178101  U   Good    Yellow
245645  U   Good    Red
256178  X   Fair    Green
803989  X   Poor    Red

File2           
ID  Type    Condition   Colour
113884  M   Good    Green
123456  M   Good    Blue
172221  M   Poor    Red
178101  U   Good    Yellow
256178  X   Fair    Green

File 3          
ID  Type    Condition   Colour
113884  M   Good    Green
123456  M   Good    Blue
172221  M   Poor    Red
178101  U   Good    Yellow
178101  U   Good    Yellow
256178  X   Fair    Green
286762  Q   Good    Purple

我想提取并合并这些文件中的类似信息,如下面所需的输出所示。在所有文件中,任何带有“类型”M 和 Q 的行及其 ID 都会被提取,因此在输出文件中,如果 ID 和类型包含在文件中,则文件名将成为指示"is"或“否”的字段列。文件与否。

所需输出(.csv):

ID  Type    File 1  File2   File3
113884  M   Yes Yes Yes
123456  M   Yes Yes Yes
172221  M   No  Yes Yes
286762  Q   No  No  Yes

这是我的不足尝试:

import os, glob

all_line =[]
for file in golob.glob('*.txt'):
    infile = open('file', 'r')
    for line in file:
        line=line.strip.split('\t')
        if line[1]=='M' or line[1]=='Q':
            all_line.append(line)

我不知道如何使用 python 或 pandas 来做到这一点。有人可以帮忙吗?谢谢。

最佳答案

IIUC 你可以这样做:

import os
import glob
import pandas as pd

files = glob.glob(r'D:\temp\.data\File*.csv')

def merge_files(files, **kwargs):
    dfs = []
    for f in files:
        dfs.append(
            pd.read_csv(f, delim_whitespace=True, usecols=['ID','Type'])
              .query("Type in ['M','Q']")
              .drop_duplicates()
              .assign(col=0)
              .rename(columns={'col':os.path.splitext(os.path.basename(f))[0]})
              .set_index(['ID','Type'])
        )
    return pd.concat(dfs, axis=1).notnull()


result = merge_files(files).reset_index()
print(result)

输出:

       ID Type  File1  File2 File3
0  113884    M   True   True  True
1  123456    M   True   True  True
2  172221    M  False   True  True
3  286762    Q  False  False  True

关于python - 使用python或pandas合并多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40598515/

相关文章:

变量更改时的python信号?

python - 取数字列表的绝对值

python - Pandas :一列基于另一列的箱线图

python - 将连续的某些值相加

Python Pandas 重新排序表

python - 列表分配去哪里了?

python - 转置 Pandas 数据框的一部分

python - 如何找出 pandas groupby 对象中唯一行的数量?

python - 根据其他数据帧的比较创建带有列的 Pandas 数据帧

python - SQLAlchemy 中的验证