【问题标题】:Appending arrays from different files and insert a column to data附加来自不同文件的数组并将列插入数据
【发布时间】:2021-02-19 14:20:37
【问题描述】:

在我的例子中,数据是多个文件中可用的二维数组。最后,我想逐行追加这些二维数组。例如,说 fileA 包含

1 2 3
4 5 6

文件B包含

7 8 9
0 1 2

我希望得到的操作是

1 2 3
4 5 6
7 8 9
0 1 2

最简单的方法是按照解决方案here 类似

data = np.concatenate([np.loadtxt(f) for f in filenames])

但是,我想在此操作期间添加一列。例如,让x = [3, 5] 长度为 x = 文件数。每个文件的行长度是固定的(在本例中为 2)。我希望得到的数组是:

3 1 2 3
3 4 5 6
5 7 8 9
5 0 1 2

如何以 Python 的方式实现这一点?

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    试试pd.concat:

    pd.concat([pd.read_csv(f, header=None).assign(x=x) 
               for (f,x) in zip(filenames, x_list)]
    

    您将最后获得x 列。如果你坚持要先拥有,你可以试试:

    pd.concat([pd.read_csv(f, header=None) for f in filenames],
              keys=x_list).reset_index(level=0)
    

    【讨论】:

    • 谢谢。有用!您能否也解释一下答案,特别是keysreset_index 是如何实现这一点的?
    • 简而言之,keys 选项通过键列表将数据标记为一级索引。然后使用reset_index 将该级别变为普通列。你可以把concat(..., keys=..)打印出来看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2016-01-27
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多