【问题标题】:Fill sparse row of a dataframe with the existing values in the column用列中的现有值填充数据框的稀疏行
【发布时间】:2022-08-03 00:28:25
【问题描述】:

我有以下类型的数据框:

CurrentDf = pd.DataFrame(np.array([[0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 0, 1], [1, 0, 2, 0, 2, 0], [0, 0, 1, 0, 2, 0], [2, 1, 0, 3, 0, 0], [0, 0, 2, 0, 5, 0]]),
                   columns=[\'1\', \'2\', \'3\', \'4\', \'5\', \'6\'])

   1  2  3  4  5  6
0  0  0  0  0  1  0
1  0  1  0  0  0  1
2  1  0  2  0  2  0
3  0  0  1  0  2  0
4  2  1  0  3  0  0
5  0  0  2  0  5  0

我想把它改成这个

DesiredDf = pd.DataFrame(np.array([[0, 0, 0, 0, 1, 1], [0, 1, 1, 1, 1, 1], [1, 1, 2, 2, 2, 2], [0, 0, 1, 1, 2, 2], [2, 1, 1, 3, 3, 3], [0, 0, 2, 2, 5, 5]]),
                   columns=[\'1\', \'2\', \'3\', \'4\', \'5\', \'6\'])

   1  2  3  4  5  6
0  0  0  0  0  1  1
1  0  1  1  1  1  1
2  1  1  2  2  2  2
3  0  0  1  1  2  2
4  2  1  1  3  3  3
5  0  0  2  2  5  5

对于每一行,如果下一列为零,则下一列取上一列的值。

    标签: python pandas dataframe sparse-matrix fill


    【解决方案1】:

    NaNs 比 0 更容易使用:

    df = df.replace(0, np.nan)
    df = df.ffill(axis=1).fillna(0).astype(int)
    print(df)
    

    输出:

       1  2  3  4  5  6
    0  0  0  0  0  1  1
    1  0  1  1  1  1  1
    2  1  1  2  2  2  2
    3  0  0  1  1  2  2
    4  2  1  1  3  3  3
    5  0  0  2  2  5  5
    

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      相关资源
      最近更新 更多