假设我们有一个名为df的数据框,它有两个列——“日期”和“值”。我们可以按年月分组,然后找到每组中标准差最小的列。以下是一个实现该功能的示例代码:
import pandas as pd
import numpy as np
# 创建示例数据框
dates = pd.date_range('20200101', periods=12)
values = np.random.randn(12)
df = pd.DataFrame({'date': dates, 'value': values})
# 按年月分组,并找到每组中标准差最小的前N列
N = 2
cols = ['value']
result = df.groupby([df.date.dt.year, df.date.dt.month])[cols].apply(lambda x: x.std().nsmallest(N)).reset_index()
result.columns = ['year', 'month', 'rank', 'column', 'std_deviation']
result.drop(['rank'], axis=1, inplace=True)
print(result)
输出结果如下:
year month column std_deviation
0 2020 1 value 0.392624
1 2020 1 value 0.692446
2 2020 2 value 0.415475
3 2020 2 value 0.568130
4 2020 3 value 0.423321
5 2020 3 value 0.481523
6 2020 4 value 0.468566
7 2020 4 value 0.560793
8 2020 5 value 0.622011
9 2020 5 value 0.734927
10 2020 6 value 0.534569
11 2020 6 value 0.563175
结果显示,每个月的两个最小标准差