簡體   English   中英

使用三列的分組問題創建一個數據框

[英]Make a dataframe with grouped questions from three columns

我有以下數據幀:

       A               B                  C
  I am motivated     Agree                4
  I am motivated     Strongly Agree       5
  I am motivated     Disagree             6
  I am open-minded   Agree                4
  I am open-minded   Disagree             4
  I am open-minded   Strongly Disagree    3

如果列A是問題,則列B是答案,列C是A列中問題的“強烈同意”,“同意”,“不同意”和“非常不同意”的頻率。

如何將其轉換為以下數據幀?

                  Strongly Agree    Agree     Disagree   Strongly Disagree
I am motivated        5               4           6             0
I am open-minded      0               4           4             3

我試着在groupby()中查看其他帖子中的列,但無法弄明白。 使用python 3

使用DataFrame.pivot_table()方法:

In [250]: df.pivot_table(index='A', columns='B', values='C', aggfunc='sum', fill_value=0)
Out[250]:
B                 Agree  Disagree  Strongly Agree  Strongly Disagree
A
I am motivated        4         6               5                  0
I am open-minded      4         4               0                  3

因為這些已經是頻率計數,我們可以假設我們有唯一的Question / Opinion對。 所以,我們可以使用set_indexunstack ,因為不會需要聚集。 這應該可以為我們節省一些時間。 我們可以使用pivot實現相同的目標,但是, pivot沒有fill_value選項,使我們能夠保留dtype

df.set_index(['A', 'B']).C.unstack(fill_value=0)

B                 Agree  Disagree  Strongly Agree  Strongly Disagree
A                                                                   
I am motivated        4         6               5                  0
I am open-minded      4         4               0                  3

額外信用
'B'轉換為pd.Categorical ,列將被排序

df.B = pd.Categorical(
    df.B, ['Strongly Disagree', 'Disagree', 'Agree', 'Strongly Agree'], True)
df.set_index(['A', 'B']).C.unstack(fill_value=0)

B                 Strongly Disagree  Disagree  Agree  Strongly Agree
A                                                                   
I am motivated                    0         6      4               5
I am open-minded                  3         4      4               0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM