我有一個應用groupby后的資料框架:
category | item
------------------
A | a_item1
| a_itme2
| a_item3
------------------
B | b_item1
| b_item2
------------------
在此基礎上,我想添加一個新的計算列。10 / (no of items per category)。
對于這個例子的資料,這將是:
category | item | value
----------------------------
A | a_item1| 3.33
| a_itme2| 3.33 3.33
| a_item3| 3.33[/span
----------------------------
B | b_item1| 5 ?
| b_item2|5
-----------------------------
如何才能做到這一點?
uj5u.com熱心網友回復:
使用Series.value_counts與Series.map:
df['value'] = 10 / df['category'] 。 map(df['category'].value_counts()
或者:
df['value'] = df['category']。 map(df['category'].value_counts()) .rdiv(10)
uj5u.com熱心網友回復:
df['value'] = 10 / df. groupby('category')['item'].transform('count')
uj5u.com熱心網友回復:
你可以使用pandas的apply函式來處理資料框架。
定義你想應用于每一行的函式:
def get_value(s: pd.Series):
vc = df['category'].value_counts()
return 10/vc[s['category']]
對每一行使用apply:
df['value'] = df.apply(get_value, axis=1)
df
# 類別專案的價值# 0 A a_item1 3.333333.
# 1 A a_item2 3.333333;/span>
# 2 A a_item3 3.333333
# 3 B b_item1 5.000000[/span
# 4 B b_item2 5.000000[/span
你也可以預先計算值的數量,并將它們作為引數添加到你的應用函式中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/307655.html
標籤:
上一篇:在pandas資料框架中,如果列條目等于0(作為浮點),如何同時向前填充值和向后填充值?
下一篇:從多標簽類中修改陣列
