【问题标题】:joining 2 text file and make a new file in python加入2个文本文件并在python中创建一个新文件
【发布时间】:2019-08-05 15:58:14
【问题描述】:

我有 2 个文本文件,例如 file1 和 file2。

文件1:

sample  group
s1      A
s2      B
s3      A
s4      B

文件2:

ID      s1      s2      s3      s4
ag      5       6       65      74
ah      7       2       63      54
ay      8       7       4       15
ak      3       9       14      24

我想从 2 个输入文本文件中创建一个新的文本文件,其中有 4 列。 2个输入文件之间的公共信息 是样本(在 file1 中是一列,在 file2 中样本是某些列的标题,包括 s1、s2、s3 和 s4)。 在输出文件中,我想转置 file2 中的所有列(第一列除外),因此第一列中的每个项目都重复 4 次(因为有 4 个样本)。所以第一列将是 4 个重复的 ID,第二列和第三列将是转置形式,最后一列将是每个样本的组

预期输出:

ID      sample  Value   group
ag      s1      5       A
ag      s2      6       B
ag      s3      65      A
ag      s4      74      B
ah      s1      7       A
ah      s2      2       B
ah      s3      63      A
ah      s4      54      B
ay      s1      8       A
ay      s2      7       B
ay      s3      4       A
ay      s4      15      B
ak      s1      3       A
ak      s2      9       B
ak      s3      14      A
ak      s4      24      B

为了产生这样的输出,我在 python 中编写了以下代码,但它没有返回预期的输出。你知道怎么解决吗?

import pandas as pd
df1 = pd.read_csv("infile1.csv")
df2 = pd.read_csv("infile2.csv")
df3 = t(df2[, 2:])
result = pd.concat(df3, df1)

【问题讨论】:

    标签: pandas file


    【解决方案1】:

    首先我们将stackdf2 的列编入索引,然后将join 来自df1 的组编入索引。最后,我们根据需要rename 列。

    df3 = df2.set_index('ID').stack().reset_index().join(df1.set_index('sample'), on='level_1').rename(columns={'level_1': 'sample', 0: 'Value'})
    

    结果:

        ID sample  Value group
    0   ag     s1      5     A
    1   ag     s2      6     B
    2   ag     s3     65     A
    3   ag     s4     74     B
    4   ah     s1      7     A
    5   ah     s2      2     B
    6   ah     s3     63     A
    7   ah     s4     54     B
    8   ay     s1      8     A
    9   ay     s2      7     B
    10  ay     s3      4     A
    11  ay     s4     15     B
    12  ak     s1      3     A
    13  ak     s2      9     B
    14  ak     s3     14     A
    15  ak     s4     24     B
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      相关资源
      最近更新 更多