如何解决拆分行并赋值 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 举报,一经查实,本站将立刻删除。