gpt4 book ai didi

python - 将三列文本文件转换为矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:31 25 4
gpt4 key购买 nike

您好,我想转换一个以制表符分隔的文件,如下所示:

Species Date Data
1 Dec 3
2 Jan 4
2 Dec 6
2 Dec 3

到这样的矩阵(物种是行标题):

    1  2
Dec 3 9
Jan 4

我猜测解决方案的一部分是创建一个包含两个键的字典并使用 defaultdict 将新值附加到键对。我想把它吐成制表符分隔的形式,但也想进入一种格式,这样我就可以使用 scipy 的集群部分。

最佳答案

DataFrame pandas 中的对象库使这变得非常简单。

import csv
from collections import defaultdict
from pandas import DataFrame

rdr = csv.reader(open('mat.txt'), delimiter=' ', skipinitialspace=True)
datacols = defaultdict(list)

# skip header
rdr.next()
for spec, dat, num in rdr:
datacols['species'].append(int(spec))
datacols['dates'].append(dat)
datacols['data'].append(int(num))

df = DataFrame(datacols)
df2 = df.pivot(index='dates', columns='species', values='data')

首先,我们以您提供的格式从文件中读取数据。然后构造一个列字典 (datacol),因为这是 panda 的 DataFrame 想要的。一旦构建了 DataFrame (df),然后调用它的 pivot 方法以获取所需的格式。下面是 dfdf2 在控制台中的样子:

In [205]: df
Out[205]:
data dates species
0 3 Dec 1
1 4 Jan 2
2 6 Dec 2
3 3 Dec 2


In [206]: df2
Out[206]:
1 2
Dec 3 3
Jan NaN 4

然后您可以使用 toCSV 方法将其保存到文件中(请参阅前面链接的 DataFrame 文档)。

关于python - 将三列文本文件转换为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com