pandas - 拆分行并分配值 pandas

标签 pandas dataframe duplicates row replicate

我有四个数据框如下:

<表类="s-表"> <头> 代理ID A B C D <正文> 123 1 0 0 0 456 1 1 1 1 789 0 0 0 0

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

<表类="s-表"> <头> 代理ID 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)])

输出:

<表类="s-表"> <头> <日> 代理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)])

关于pandas - 拆分行并分配值 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67677731/

相关文章:

python - 如何使用另一个过滤后的数据帧更新数据帧

python - 如何使用列中每个唯一元素的第一次出现对数据框进行排序?

javascript - 如何复制 div onclick 事件?

正则表达式删除与第一个字符串匹配的行?

python - 如何将箱线图与平均线连接

python - pandas describe() reshape 为具有列名的一行

python - Keras 神经网络错误 : Setting an Array Element with a Sequence

Python Pandas 数据帧 : Compare rows two by two recusively.

c - 需要帮助 : Unable to delete string from doubly linked list: C

python - 高效地将值从一列替换为另一列 Pandas DataFrame