簡體   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