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

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

最佳答案

这就是我要做的:

# 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

关于python - 在 Pandas 中将空行转换为列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57806725/

10-12 22:03