我正在处理数据集,我将数据取消堆叠,并获取第一行和最后一行。
void function(void) {}
然后我使用>>> print df.iloc[[(0), (-1)]]
Distance
Node 0 1 2
Time
0 27.0 54.0 97.0
60 22.0 49.0 92.0
来获得两行的差异
df1 = (df.loc[0] - df.iloc[(-1)]).unstack()
最后,我想连接/组合两个数据集(Node 0 1 2
Distance 5.0 5.0 5.0
和df
)。
df1
但我得到了 >>> print pd.concat([df, df1], axis=1)
(Distance, 0) (Distance, 1) (Distance, 2)
0 27.0 54.0 NaN
60 22.0 49.0 92.0
Distance NaN NaN NaN
。
有谁知道我做错了什么?
我希望我的输出看起来像这样
NaN
答案 0 :(得分:0)
在我看来,你想要实现的目标不需要使用unstack
。以下是几种选择。为简化格式化,我省略了索引和列名称。
df = pd.DataFrame({0: [27.0, 22.0], 1: [54.0, 49.0], 2: [97.0, 92.0]},
index=[0, 60])
print(df)
0 1 2
0 27.0 54.0 97.0
60 22.0 49.0 92.0
通过带有行标签的pd.DataFrame.loc
按索引添加新行。
df.loc['Distance'] = df.loc[0] - df.iloc[-1]
将差异系列转换为数据帧,然后进行转置和连接。
diff = (df.loc[0] - df.iloc[-1]).to_frame().T
diff.index = ['Distance']
res = pd.concat([df, diff])
<强>结果强>
两种方法的结果:
print(res)
0 1 2
0 27.0 54.0 97.0
60 22.0 49.0 92.0
Distance 5.0 5.0 5.0