我看到了一个看起来像下面示例的数据框
col_a col_b col_c col_d extra1 extra2 extra3
a a a a b c d
a a a a b c d
a a a b c d Nan
a a a b c d Nan
a a b c d Nan Nan
a a b c d Nan Nan
a b c d Nan Nan Nan
a b c d Nan Nan Nan
我必须把它改造成这样的东西:
col_a col_b col_c col_d
a a a a b c d
a a a a b c d
a a a b c d
a a a b c d
a a b c d
a a b c d
a b c d
a b c d
因此看起来取决于 NaN 的位置(extra1 2 或 3),我总是必须将最后 3 列移动到包含 Nan 的列之前,并将前面的列连接到 col_a 中。
请您参考如下方法:
使用:
#if necessary convert string `Nan` to missing values
df = df.replace('Nan', np.nan)
df = df.apply(lambda x: x.shift(x.isnull().sum()), axis=1)
print (df)
col_a col_b col_c col_d extra1 extra2 extra3
0 a a a a b c d
1 a a a a b c d
2 NaN a a a b c d
3 NaN a a a b c d
4 NaN NaN a a b c d
5 NaN NaN a a b c d
6 NaN NaN NaN a b c d
7 NaN NaN NaN a b c d
df1 = df.iloc[:, -3:]
df1.insert(0, 'a', df.iloc[:, :-3].add(' ').fillna('').sum(axis=1))
df1.columns = df.columns[:4]
print (df1)
col_a col_b col_c col_d
0 a a a a b c d
1 a a a a b c d
2 a a a b c d
3 a a a b c d
4 a a b c d
5 a a b c d
6 a b c d
7 a b c d
