【问题标题】:pandas aggregating frames by largest common column denominator and filling missing valuespandas 按最大公列分母聚合帧并填充缺失值
【发布时间】:2018-11-13 08:28:59
【问题描述】:

我一直在为这个问题苦苦挣扎,尽管我会假设有一些解决方法,但我很想知道是否有一种优雅的方式来实现这个结果:

import pandas as pd
import numpy as np

data = np.array([
            [1,10],
            [2,12],
            [4,13],
            [5,14],
            [8,15]])

df1 = pd.DataFrame(data=data, index=range(0,5), columns=['x','a'])

data = np.array([
            [2,100,101],
            [3,120,122],
            [4,130,132],
            [7,140,142],
            [9,150,151],
            [12,160,152]])

df2 = pd.DataFrame(data=data, index=range(0,6), columns=['x','b','c'])

现在我想要一个数据框,将这两个连接起来,并用之前的值填充缺失的值 否则为第一个值。两个数据框可以有不同的大小,这里我们感兴趣的是唯一的列 x。

那将是我想要的输出帧 df_result。 x 是 2 帧之间聚合的唯一“x”

    x   a   b   c
0   1   10  100 101
1   2   12  100 101
2   3   12  120 122
3   4   13  130 132
4   5   14  130 132
5   7   14  140 142
6   8   15  140 142
7   9   15  150 151
8   12  15  160 152 

任何帮助或提示将不胜感激,非常感谢您

【问题讨论】:

    标签: pandas numpy dataframe alignment concatenation


    【解决方案1】:

    您可以简单地对 2 个数据帧使用合并操作,之后您可以对空值填充应用排序、前向填充和后向填充。

    df1.merge(df2,on='x',how='outer').sort_values('x').ffill().bfill()
    

    输出:

       x     a       b       c
    0   1   10.0    100.0   101.0
    1   2   12.0    100.0   101.0
    5   3   12.0    120.0   122.0
    2   4   13.0    130.0   132.0
    3   5   14.0    130.0   132.0
    6   7   14.0    140.0   142.0
    4   8   15.0    140.0   142.0
    7   9   15.0    150.0   151.0
    8   12  15.0    160.0   152.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 2021-12-12
      • 2013-04-27
      相关资源
      最近更新 更多