猿问

串联多个数据框并在DataFrame中对行进行排序

我需要合并多个数据框。这是数据帧的示例代码


df1 = pd.DataFrame(np.array([

    [0, 5, 9],

    [0.3434, 4, 61],

    [10.22, 24, 9]]),

    columns=['time', 'attr11', 'attr12'])

df2 = pd.DataFrame(np.array([

    [0, 5, 19],

    [0.3, 14, 16],

    [9.99, 4, 9]]),

    columns=['time', 'attr21', 'attr22'])

df3 = pd.DataFrame(np.array([

    [0, 15, 49],

    [6.66, 4, 36],

    [9.66, 14, 9]]),

    columns=['time', 'attr31', 'attr32'])

现在,如果可以,请串联


con = pd.concat([df1,df2,df3], ignore_index=True, sort=True)

sorted_data = con.sort_values(by="time")

我得到的(几乎)输出是我想要的,但是还有3行0。


这是我得到的输出


attr11  attr12  attr21  attr22  attr31  attr32  time

0   5.0 9.0 NaN NaN NaN NaN 0.0000

3   NaN NaN 5.0 19.0    NaN NaN 0.0000

6   NaN NaN NaN NaN 15.0    49.0    0.0000

4   NaN NaN 14.0    16.0    NaN NaN 0.3000

1   4.0 61.0    NaN NaN NaN NaN 0.3434

7   NaN NaN NaN NaN 4.0 36.0    6.6600

8   NaN NaN NaN NaN 14.0    9.0 9.6600

5   NaN NaN 4.0 9.0 NaN NaN 9.9900

2   24.0    9.0 NaN NaN NaN NaN 10.2200

零时间行应具有一行,而不是三行,因此NaN零时间行中将没有行。


这应该第一行看起来像


0  5.0  9.0 5.0 19.0 15.0 49

我怎样才能做到这一点 ?


不负相思意
浏览 180回答 2
2回答

三国纷争

这应该工作。aggregation_functions = {'attr11':'sum','attr12':'sum','attr21':'sum','attr22':'sum','attr31':'sum','attr32':'sum'}con_new = con.groupby(con['time']).aggregate(aggregation_functions)con_new
随时随地看视频慕课网APP

相关分类

Python
我要回答