gpt4 book ai didi

python - 使用列作为矩阵中的行标题和列标题

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:59 29 4
gpt4 key购买 nike

我有一个这样的 csv 文件:

1   A   10
2 A 20
1 B 30
1 C 40
2 B 50

我想像这样组织我的矩阵:

    1   2

A 10 20
B 30 50
C 40 0

实现此目标的最佳方法是什么?

我当前的解决方案(当我想访问矩阵中的内容时使用 index_0 和 index_1):

index_0 = list(set([l.split("\t")[0] for l in csv_file]))
index_1 = list(set([l.split("\t")[1] for l in csv_file]))

m = np.zeros((len(index_0),len(index_1)))

for line in csv_file:
s = line.split("\t")
m[index_0.index(s[0]), index_1.index(s[1])] = s[2]

有些事情告诉我有一种更有效的方法可以使用 numpy/pandas 来做到这一点..

最佳答案

使用pd.pivot_table

In [913]: df.pivot_table(index='col2', columns='col1', 
values='col3', aggfunc='sum', fill_value=0)
Out[913]:
col1 1 2
col2
A 10 20
B 30 50
C 40 0

或者,使用 pd.crosstab

In [921]: pd.crosstab(index=df['col2'], columns=df['col1'], values=df['col3'], 
...: aggfunc='sum').fillna(0)
Out[921]:
col1 1 2
col2
A 10.0 20.0
B 30.0 50.0
C 40.0 0.0

或者,使用 groupbyunstack

In [926]: df.groupby(['col2', 'col1']).sum().unstack(fill_value=0)
Out[926]:
col3
col1 1 2
col2
A 10 20
B 30 50
C 40 0

关于python - 使用列作为矩阵中的行标题和列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271479/

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