我正在尝试使用groupby而不使用任何类型。
但是,如果我将sort
设置为false,我的多索引df将取消堆栈
sort = True
(预期结果,排序问题除外):
level_0
Friday 3M -0.002532 12 0.666667
6M -0.002532 12 0.666667
Monday 3M 0.126991 12 0.833333
6M 0.126991 12 0.833333
Thursday 3M 0.047767 13 0.461538
6M 0.047767 13 0.461538
Tuesday 3M -0.077558 14 0.285714
6M -0.077558 14 0.285714
Wednesday 3M 0.002976 13 0.615385
6M 0.002976 13 0.615385
Sort = False:
(级别0似乎已取消堆叠)
total_returns total_counts positive_day_chance
level_0
Monday 3M 0.126991 12 0.833333
Tuesday 3M -0.077558 14 0.285714
Wednesday 3M 0.002976 13 0.615385
Thursday 3M 0.047767 13 0.461538
Friday 3M -0.002532 12 0.666667
Monday 6M 0.126991 12 0.833333
Tuesday 6M -0.077558 14 0.285714
Wednesday 6M 0.002976 13 0.615385
Thursday 6M 0.047767 13 0.461538
Friday 6M -0.002532 12 0.666667
我想要sort=True的行为,不需要排序
以下是数据帧的代码:
import pandas as pd
print(pd.__version__) # 1.0xx
'''
level_0 total_returns total_counts positive_day_chance
Monday 3M 0.126991 12 0.833333
Tuesday 3M -0.077558 14 0.285714
Wednesday 3M 0.002976 13 0.615385
Thursday 3M 0.047767 13 0.461538
Friday 3M -0.002532 12 0.666667
Monday 6M 0.126991 12 0.833333
Tuesday 6M -0.077558 14 0.285714
Wednesday 6M 0.002976 13 0.615385
Thursday 6M 0.047767 13 0.461538
Friday 6M -0.002532 12 0.666667
'''
df = pd.read_clipboard()
print('sort: False', '\n')
print(df.groupby([df.index, 'level_0'], sort = False).sum())
print('sort: True', '\n')
print(df.groupby([df.index, 'level_0']).sum())
看起来您希望按照自定义(即,非词典)顺序进行排序。t最好的方法是使用分类。在这种情况下,将其设置为CategoricalIndex并指定顺序,即:
无论排序设置为什么,这个解决方案都会得到相同的结果
不清楚你想要什么。在数据帧中,每个(天,级别0)键只有一行
我更改了您的数据帧:
使用
sort=False
时,不会对(日期,级别0)组键进行排序,而使用sort=True
时,可以看到所有Friday
行,然后是Monday
行另外,在我的示例中,您可以看到添加了列的值
相关问题 更多 >
编程相关推荐