在熊貓數據框中,可以使用函數對其索引進行分組。我正在尋找定義一個函數,而不是應用於列。將函數應用於熊貓數據框組中的第2列由
我期待組兩列,但我需要通過一個任意函數進行分組第二列,foo
:
group_sum = df.groupby(['name', foo])['tickets'].sum()
將如何foo
被定義爲組第二列分成兩組,例如,通過值是否爲> 0
進行劃分?或者,是一種完全不同的方法或語法?
在熊貓數據框中,可以使用函數對其索引進行分組。我正在尋找定義一個函數,而不是應用於列。將函數應用於熊貓數據框組中的第2列由
我期待組兩列,但我需要通過一個任意函數進行分組第二列,foo
:
group_sum = df.groupby(['name', foo])['tickets'].sum()
將如何foo
被定義爲組第二列分成兩組,例如,通過值是否爲> 0
進行劃分?或者,是一種完全不同的方法或語法?
Groupby可以接受標籤和系列/數組的任意組合(只要該數組的長度與數據幀的長度相同),因此您可以將該函數映射到列並將其傳遞到組中,如
df.groupby(['name', df[1].map(foo)])
或者你可能要爲新列前添加條件,你的數據框的執行GROUPBY,這將會給它的指數名稱的優點是:
df['>0'] = df[1] > 0
group_sum = df.groupby(['name', '>0'])['tickets'].sum()
像這樣的東西將工作:
x.groupby(['name', x['value']>0])['tickets'].sum()
像上面提到的那樣,groupby
可以接受標籤和系列。這應該給你你正在尋找的答案。這裏是一個例子:
data = np.array([[1, -1, 20], [1, 1, 50], [1, 1, 50], [2, 0, 100]])
x = pd.DataFrame(data, columns = ['name', 'value', 'value2'])
x.groupby(['name', x['value']>0])['value2'].sum()
name value
1 False 20
True 100
2 False 100
Name: value2, dtype: int64