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