ale*_*wis 2 python sum unique median pandas
我有一个熊猫系列,我想以三种不同的方式组合起来。该系列如下:
import pandas as pd
timestamps = [1,1,1,2,3,3,3,4]
quantities = [10,0,2,6,7,2,8,0]
series = pd.Series(quantities, index=timestamps)
Run Code Online (Sandbox Code Playgroud)
显然,时间戳有3 values of 1、1 value of 2、3 values of 3和1 value of 1。我想生成以下系列:
1. 重复索引值的总和:
pd.Series([12,6,17,0], index=[1,2,3,4])
Run Code Online (Sandbox Code Playgroud)
2. 重复索引值的中位数:
pd.Series([2,6,7,0], index=[1,2,3,4])
Run Code Online (Sandbox Code Playgroud)
2、重复索引值的数量:
pd.Series([3,1,3,1], index=[1,2,3,4])
Run Code Online (Sandbox Code Playgroud)
在numpy我将使用一种unique_elements_to_indices方法来实现这一点:
from typing import Dict
import numpy as np
def unique_elements_to_indices(array: np.array) -> Dict:
mapping = {}
for unique_element in np.unique(array):
mapping[unique_element] = np.where(array == unique_element)[0]
return mapping
Run Code Online (Sandbox Code Playgroud)
...然后我将循环遍历unique_elements并使用np.where来定位quantities给定的unique_element。
请问有什么办法可以在 pandas 中快速实现这一目标吗?
谢谢。
这里可以使用函数sum,median用于单独的输出,并带有level=0按索引聚合的参数:
print (series.sum(level=0))
print (series.median(level=0))
Run Code Online (Sandbox Code Playgroud)
但通常按索引与函数聚合:
print (series.groupby(level=0).sum())
print (series.groupby(level=0).median())
#difference between count and size is count exclude NaNs values
print (series.groupby(level=0).size())
print (series.groupby(level=0).count())
Run Code Online (Sandbox Code Playgroud)
如果需要将新的 DataFrameGroupBy.agg与聚合函数列表一起使用:
print(series.groupby(level=0).agg(['sum', 'median', 'size']))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4854 次 |
| 最近记录: |