In [185]: pd.DataFrame(df.stack().values.reshape(-1,3),
columns='ColA_New ColB_New ColC_New'.split(),
index=df.index)
Out[185]:
ColA_New ColB_New ColC_New
0 A b D
1 W R D
2 J H T
3 Q A O
print(df)
ColA ColB ColC ColD ColF ColG ColH
0 A NaN b NaN NaN NaN D
1 NaN W NaN NaN R NaN D
2 J NaN NaN H NaN T NaN
3 Q NaN A NaN NaN NaN O
m = df.notnull()
x = m.sum(1).max()
df = pd.DataFrame(df.values[m].reshape(-1, x))\
.rename(columns=lambda x: 'Col_' + chr(ord('A') + x))
print(df)
Col_A Col_B Col_C
0 A b D
1 W R D
2 J H T
3 Q A O
类似于@cᴏʟᴅsᴘᴇᴇᴅ的解决方案:
假设您的空格是
NaN
s,请将df.notnull
与numpy的索引和reshape
结合使用。请注意,花哨的列命名逻辑适用于任意数量的列。你知道吗如果您的数据帧包含空格,则使用
df.ne
,其余的相同。你知道吗如果这就是你的CSV文件的样子,那么你就不需要这些了。相反,在加载CSV时,可以使用
pd.read_csv
将问题消灭在萌芽状态:如果需要,可以使用
rename
重命名列,如上所述。你知道吗也与
相关问题 更多 >
编程相关推荐