python - Pandas 移动行值以匹配列名

标签 python pandas pandas-groupby

我有一个示例数据集,其中包含一组列名称。在移动数据时,我在每一行中打印字母,如下所示。

我正在尝试移动每一行的值以匹配相应的列。我试过这样做 pd.shift() 这样做但没有取得太大的成功。我试图得到下面看到的东西。有什么想法吗?

import pandas as pd
df = pd.DataFrame({'A': list('AAAAA'),
                   'B': list('CBBDE'),
                   'C': list('DDCEG'),
                   'D': list('EEDF '),
                   'E': list('FFE  '),
                   'F': list('GGF  '),
                   'G': list('  G  ')})

   A  B  C  D  E  F  G
0  A  C  D  E  F  G   
1  A  B  D  E  F  G   
2  A  B  C  D  E  F  G
3  A  D  E  F         
4  A  E  G              

之后:

    A   B   C   D   E   F   G
0   A       C   D   E   F   G
1   A   B       D   E   F   G
2   A   B   C   D   E   F   G
3   A           D   E   F   
4   A               E       G

最佳答案

这是一个广播比较方法。这将非常快,但确实具有更高的内存复杂性。


a = df.to_numpy()
b = df.columns.to_numpy()

pd.DataFrame(np.equal.outer(a, b).any(1) * b, columns=b)

   A  B  C  D  E  F  G
0  A     C  D  E  F  G
1  A  B     D  E  F  G
2  A  B  C  D  E  F  G
3  A        D  E  F
4  A           E     G

关于python - Pandas 移动行值以匹配列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57909222/

相关文章:

python - 我不明白这行代码 tk.Tk.__init__(self,*args,**kwargs)

python - 我以某种方式在没有标准库的情况下安装 Python

python - 在 python 3.3 中使用时区更新的字符串

python - 在 Pandas DataFrame 列中进行整数编码后将 dtype 保留为类别

python - Pandas ,如何过滤 df 以获得独特的条目?

Python Pandas 比较两个数据框然后编辑

python - 如何将字符串变成列表?

python - Pandas:上次列具有非纳米值的时间

python - Pandas groupby 查找两个日期时间列之间的差异

python - 对某些列执行 groupby.sum,对其他列执行 groupby.mean