我有一行是空的,除了第一列中的值。我想将所有这样的行转换成这样的列:
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/