Python 我如何将这些值推到熊猫中的nan?

Python 我如何将这些值推到熊猫中的nan?,python,pandas,Python,Pandas,我使用以下代码设置数据帧: df = pd.DataFrame({'A':['a','a','b','c'],'B':[123,456,555,888]}) pd.pivot(df.A, df.index, df.B) 然后执行以下代码: df = pd.DataFrame({'A':['a','a','b','c'],'B':[123,456,555,888]}) pd.pivot(df.A, df.index, df.B) 数据帧更改为: 现在我想知道如何将非NAN值移动到前面的列,

我使用以下代码设置数据帧:

df = pd.DataFrame({'A':['a','a','b','c'],'B':[123,456,555,888]})
pd.pivot(df.A, df.index, df.B)
然后执行以下代码:

df = pd.DataFrame({'A':['a','a','b','c'],'B':[123,456,555,888]})
pd.pivot(df.A, df.index, df.B)
数据帧更改为:

现在我想知道如何将非NAN值移动到前面的列,如下所示:

您可以使用groupby,而不是旋转然后修复结果:

或者,使用groupby/cumcount为每个组分配正确的列号, 然后旋转:


如果要保留与NAN相同数量的列

如果你不需要

In [587]: dff.apply(lambda x: pd.Series(x.dropna().values), axis=1)
Out[587]:
       0      1
A
a  123.0  456.0
b  555.0    NaN
c  888.0    NaN

@ltdong7788似乎是您的问题,您的例外不匹配您的答案也很完美。但很抱歉,我没有很好地表达我的问题。
In [585]: dff = pd.pivot(df.A, df.index, df.B)

In [586]: (dff.apply(lambda x: pd.Series(x.dropna().values), axis=1)
              .reindex_axis(dff.columns, 1))
Out[586]:
       0      1   2   3
A
a  123.0  456.0 NaN NaN
b  555.0    NaN NaN NaN
c  888.0    NaN NaN NaN
In [587]: dff.apply(lambda x: pd.Series(x.dropna().values), axis=1)
Out[587]:
       0      1
A
a  123.0  456.0
b  555.0    NaN
c  888.0    NaN