繁体   English   中英

使用 pandas.crosstab 保留订单

[英]Preserving order with pandas.crosstab

我有以下 csv 数据:

question,answer
m2020_s,3
m2020_s,3
m2020_s,3
m2020_s,3
m2020_s,3
m2020_s,3
a2020_k,1
a2020_k,2
a2020_k,1
a2020_k,4
a2020_k,1
a2020_k,1
d2015_a,5
d2015_a,4
d2015_a,4
d2015_a,4
d2015_a,4
d2015_a,4

我正在使用pd.crosstab来计算给出每个答案的次数,但是 function 弄乱了我的数据顺序。 这是我的代码:

import pandas as pd

df = pd.read_csv('example.csv')

output_array = pd.crosstab(df['question'], df['answer']).to_numpy()

print(output_array)

预期结果:

[[0 0 6 0 0]
 [4 1 0 1 0]
 [0 0 0 5 1]]

实际结果:

[[4 1 0 1 0]
 [0 0 0 5 1]
 [0 0 6 0 0]]

为什么会这样? 以及如何保留数据的顺序?

你可以试试这个,

pd.crosstab(df['question'], df['answer']).reindex(df['question'].unique()).to_numpy()

输出/输出:

array([[0, 0, 6, 0, 0],
       [4, 1, 0, 1, 0],
       [0, 0, 0, 5, 1]], dtype=int64)

说明:基于首次出现的数据集中的唯一元素重新排序索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM