[英]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
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_index
和unstack
,因為不會需要聚集。 這應該可以為我們節省一些時間。 我們可以使用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.