[英]How to name the column when using value_count function in pandas?
我通過下面的代碼計算了角度和距離的出現次數:
g = new_df.value_counts(subset=['Current_Angle','Current_dist'] ,sort = False)
輸出:
current_angle current_dist 0
-50 30 1
-50 40 2
-50 41 6
-50 45 4
嘗試1:
g.columns = ['angle','Distance','count','Percentage Missed']
- 結果是列名沒有變化
嘗試2:
當我使用print(g.columns)
打印列時出現錯誤AttributeError: 'Series' object has no attribute 'columns'
我想將第0 列重命名為計數,並將一個新列添加到數據框g
中,作為錯過的百分比,由 100 計算 - 第 0 列中的值
預期產出
current_angle current_dist count percent missed
-50 30 1 99
-50 40 2 98
-50 41 6 94
-50 45 4 96
1:如何修改代碼? 我的意思是,除了 value_counts,還有其他函數可以提供預期的輸出嗎? 2. 如何用當前方法得到預期的輸出?
編輯1 (例外情況)
數據:
角度 | 距離 | 速度 |
---|---|---|
0 | 124 | -3 |
50 | 24 | -25 |
50 | 34 | 25 |
預期輸出:
計數是根據距離計算的
角度 | 距離 | 速度 | 數數 | 錯過百分比 |
---|---|---|---|---|
0 | 124 | -3 | 1 | 99 |
50 | 24 | -25 | 1 | 99 |
50 | 34 | 25 | 1 | 99 |
首先添加Series.reset_index
,因為DataFrame.value_counts
返回Series
,所以可能使用參數name
將列0
更改為count
列,然后通過Series.rsub
將新列減去100
以從右側減去100 - df['count']
:
df = (new_df.value_counts(subset=['Current_Angle','Current_dist'] ,sort = False)
.reset_index(name='count')
.assign(**{'percent missed': lambda x: x['count'].rsub(100)}))
或者,如果需要還設置新列名,請使用DataFrame.set_axis
:
df = (new_df.value_counts(subset=['Current_Angle','Current_dist'] ,sort = False)
.reset_index(name='count')
.set_axis(['angle','Distance','count'], axis=1)
.assign(**{'percent missed': lambda x: x['count'].rsub(100)}))
如果需要在這里分配新的列名是替代解決方案:
df = (new_df.value_counts(subset=['Current_Angle','Current_dist'] ,sort = False)
.reset_index())
df.columns = ['angle','Distance','count']
df['percent missed'] = df['count'].rsub(100)
假設 DataFrame 作為輸入(如果不是reset_index
首先),只需使用rename
和減法:
df = df.rename(columns={'0': 'count'}) # assuming string '0' here, else use 0
df['percent missed'] = 100 - df['count']
輸出:
current_angle current_dist count percent missed
0 -50 30 1 99
1 -50 40 2 98
2 -50 41 6 94
3 -50 45 4 96
groupby.size
:(new_df
.groupby(['current_angle','current_dist']).size()
.reset_index(name='count')
.assign(**{'percent missed': lambda d: 100-d['count']})
)
輸出:
current_angle current_dist count percent missed
0 -50 30 1 99
1 -50 40 2 98
2 -50 41 6 94
3 -50 45 4 96
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.