gpt4 book ai didi

python - 向多索引数据框添加列

转载 作者:行者123 更新时间:2023-11-30 22:49:52 25 4
gpt4 key购买 nike

我想将 SUM 列添加到下面的 df1 中。它是一个 Datetime MultiIndex,新列 SUM 应返回价格总和行。

multex = pd.MultiIndex.from_product([['price',
'weight','quantity','portfolio'] ,df1.index],names=['Date', 'Stats'])

new_df = pd.DataFrame(index=multex, columns= df1.columns.values.tolist())

随后还想添加一行 SUM 以返回相同的值。到目前为止我已经尝试过以下操作:

df1['SUM']= df1.ix['price'].sum(axis=1) 


A B C D E

2006-04-28 00:00:00
price 69.62 69.62 6.518 65.09 69.62
weight
std
2006-05-01 00:00:00
price 71.5 71.5 6.522 65.16 71.5
weight
std
2006-05-02 00:00:00
price 72.34 72.34 6.669 66.55 72.34
weight
std

最佳答案

您可以先使用DataFrame.sort_index ,因为错误:

KeyError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (1)'

然后使用 slicers :

df1 = df1.sort_index()

idx = pd.IndexSlice
df1['SUM'] = df1.loc[idx[:,'price'],:].sum(axis=1)
print (df1)
A B C D E SUM
Date Stats
2006-04-28 00:00:00 price 69.62 69.62 6.518 65.09 69.62 280.468
std NaN NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN NaN
2006-05-01 00:00:00 price 71.50 71.50 6.522 65.16 71.50 286.182
std NaN NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN NaN
2006-05-02 00:00:00 price 72.34 72.34 6.669 66.55 72.34 290.239
std NaN NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN NaN
<小时/>
df1['SUM'] = df1.loc[(slice(None), slice('price')),:].sum(axis=1)
print (df1)
A B C D E SUM
Date Stats
2006-04-28 00:00:00 price 69.62 69.62 6.518 65.09 69.62 280.468
std NaN NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN NaN
2006-05-01 00:00:00 price 71.50 71.50 6.522 65.16 71.50 286.182
std NaN NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN NaN
2006-05-02 00:00:00 price 72.34 72.34 6.669 66.55 72.34 290.239
std NaN NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN NaN

关于python - 向多索引数据框添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39564433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com