[英]Problems transforming a pandas dataframe
我在將熊貓數據框轉換為我需要進行進一步分析的格式時遇到了麻煩。 當前數據來自一項調查,我們在調查中要求人們訂購首選的溝通方式(1 =最高,4 =最低)。 每行都是一個受訪者。
當前數據框:
A B C D
0 1 2 4 3
1 2 3 1 4
2 2 1 4 3
3 2 1 4 3
4 1 3 4 2
...
對於數據分析,我想將其轉換為以下數據框,其中每一行是一種不同的通信方式,而列則是一個人在該位置對其進行排名的頻率的計數。
1st 2d 3th 4th
A 2 3 0 0
B 2 1 2 0
C 1 0 0 4
D 0 1 3 1
我試圖在原始數據幀上應用定義的函數,我試圖在數據幀上應用.groupby函數或.T,但似乎並沒有更接近我想要的結果。
這是我編寫的函數,但是我無法弄清楚如何正確應用它來給我想要的結果。
def count_values_rank(column,rank):
total_count_n1 = 0
for i in column:
if i == rank:
total_count_n1 += 1
return total_count_n1
在我的數據框的單個列上運行這段代碼會獲得所需的結果,但是很難實際編寫它,因此我可以將其應用於數據框並獲得我想要的結果。 下面的代碼行將返回2。
count_values_rank(df.iloc[:,0],'1')
這可能是一個非常明顯的解決方案,但是很難找到最簡單的解決方法。
非常感謝!
與crosstab
melt
pd.crosstab(df.melt().variable,df.melt().value).add_suffix('st')
Out[107]:
value 1st 2st 3st 4st
variable
A 2 3 0 0
B 2 1 2 0
C 1 0 0 4
D 0 1 3 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.