微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

拆分行并赋值 pandas

如何解决拆分行并赋值 pandas

我有四个数据框如下:

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

我真的很感激任何输入。谢谢。

解决方法

通过 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)])

输出:

代理id 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)])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。