【问题标题】:Split rows and assign values pandas拆分行并赋值 pandas
【发布时间】:2021-08-13 02:13:56
【问题描述】:

我有四个数据框如下:

Proxyid A B C D
123 1 0 0 0
456 1 1 1 1
789 0 0 0 0

这就是数据框的思想。现在我想复制多个 1. 的行并按如下方式分配值。

Proxyid A B C D
123 1 0 0 0
456 1 0 0 0
456 0 1 0 0
456 0 0 1 0
456 0 0 0 1
789 0 0 0 0

我非常感谢任何意见。谢谢。

【问题讨论】:

    标签: pandas dataframe duplicates row replicate


    【解决方案1】:

    一个选项通过pd.get_dumies:

    df1 = (
        pd.get_dummies(
            df.set_index('Proxyid')
            .mul(df.columns[1:])
            .replace('', np.NAN)
            .stack()
        )
        .reset_index().drop('level_1', 1)
    ) 
    result = df1.append(df[~df.Proxyid.isin(df1.Proxyid)])
    

    输出:

    Proxyid A B C D
    0 123 1 0 0 0
    1 456 1 0 0 0
    2 456 0 1 0 0
    3 456 0 0 1 0
    4 456 0 0 0 1
    2 789 0 0 0 0

    如果您有额外的列,只需将它们添加到 set_index 并使用:

    df1 = df.set_index(['Proxyid', 'test'])
    df1 = pd.get_dummies(df1.mul(df1.columns).replace('', np.NAN).stack()).reset_index()
    result = df1.append(df[~df.Proxyid.isin(df1.Proxyid)])
    

    【讨论】:

    • 我想添加如果我有超过这 5 列怎么办?我只想对提到的那些列进行操作?
    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多