Pandas - 结合两个未堆叠的数据帧

时间:2018-06-17 15:52:50

标签: python pandas dataframe

我正在处理数据集,我将数据取消堆叠,并获取第一行和最后一行。

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

1 个答案:

答案 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

通过带有行标签的pd.DataFrame.loc按索引添加新行。

df.loc['Distance'] = df.loc[0] - df.iloc[-1]

pd.Series.to_frame + concat

将差异系列转换为数据帧,然后进行转置和连接。

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