我不知道如何做以下事情! 有人解决方案吗?
我有以下数据框,其中TEST,DATE和PRODUCTS作为索引。我想在所有测试和日期中添加以下产品。例如,T3 = T2 + 1
>>> df
TEST DATE PRODUCTS
A1 2014-02-28 T_01 7.9
T_1 8.1
T_2 8.6
2014-03-03 T_01 7.4
T_1 8.4
T_2 8.7
...
我想要:
>>> df
TEST DATE PRODUCTS
A1 2014-02-28 T_01 7.9
T_1 8.1
T_2 8.7
T_3 9.6
2014-03-03 T_01 7.4
T_1 8.4
T_2 8.7
T_3 9.7
...
答案 0 :(得分:1)
我认为您可以先unstack
,然后再生成T_3
和stack
。
In [15]:
print df
0
TEST DATE PRODUCTS
A1 2014-02-28 T_01 7.9
T_1 8.1
T_2 8.6
2014-03-03 T_01 7.4
T_1 8.4
T_2 8.7
[6 rows x 1 columns]
In [16]:
df2 = df.unstack()[0] #if the variable name is 0
df2['T_3']=df2['T_2']+1
df2.stack() #need to convert to a DataFrame,
Out[16]:
TEST DATE PRODUCTS
A1 2014-02-28 T_01 7.9
T_1 8.1
T_2 8.6
T_3 9.6
2014-03-03 T_01 7.4
T_1 8.4
T_2 8.7
T_3 9.7
dtype: float64
备选方案是手动添加T_3
级别:
In [37]:
df2=df.xs('T_2', level=2)+1
df2['PRODUCTS']='T_3'
df2.set_index('PRODUCTS', append=True, inplace=True)
df3=df.append(df2).sort_index()
In [38]:
print df3
0
TEST DATE PRODUCTS
A1 2014-02-28 T_01 7.9
T_1 8.1
T_2 8.6
T_3 9.6
2014-03-03 T_01 7.4
T_1 8.4
T_2 8.7
T_3 9.7
[8 rows x 1 columns]