首页 > 解决方案 > Pandas 移动行值以匹配列名

问题描述

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

我正在尝试移动每行的值以匹配任一列。我曾尝试这样做 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

标签: pythonpandaspandas-groupby

解决方案


这是更多列表pivot问题

s=df.mask(df=='').stack().reset_index()
s.pivot(index='level_0',columns=0,values=0)
Out[34]: 
0        A    B  C    D
level_0                
0        A    B  C    D
1        A  NaN  C  NaN
2        A  NaN  C    D

推荐阅读