首页 > 解决方案 > 将空行转换为熊猫中的列

问题描述

我有一行是空的,除了第一列中的值。我想将所有这样的行转换成这样的列:

x_df = pd.DataFrame({'A':['John','ex1','ex2','Joe','qz1','qz2','qz3'],
                 'val1':[ '',10,5,'',80,10,10],
                  'val2':[ '',20,6,'',90,10,1],
                  'val3':[ '',30,7,'',100,10,0]})


Out[222]: 
         A   val1 val2 val3
     0  john               
     1  ex1   10   20   30 
     2  ex2   5    6    7  
     3  joe                
     4  qz1   80   90   100
     5  qz2   10   10   10 
     6  qz3   10   1    0 

预期输出:

x_df =
     A  val1  val2  val3 name
  0 ex1   10   20   30   john
  1 ex2   5    6    7    john
  2 qz1   80   90   100  joe
  3 qz2   10   10   10   joe
  4 qz3   10   1     0   joe

标签: pythonpandas

解决方案


这就是我要做的:

# mask the empty rows
# you can use x_df.iloc[:, 1:] instead
s = x_df.filter(like='val').ne('').any(1)

# name column
# mask(s) selects the empty rows
# ffill fills the other rows
x_df['name'] = x_df['A'].mask(s).ffill()

# filter
x_df[s]

输出:

     A val1 val2 val3  name
1  ex1   10   20   30  John
2  ex2    5    6    7  John
4  qz1   80   90  100   Joe
5  qz2   10   10   10   Joe
6  qz3   10    1    0   Joe

推荐阅读