我怎么能把价值推到大熊猫的纳米?

时间:2017-09-09 02:11:24

标签: python pandas

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

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

pd.pivot(df.A, df.index, df.B)

数据框更改为:

pic1

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

pic2

3 个答案:

答案 0 :(得分:1)

而不是can't be blank (value: undefined). (然后修复结果),您可以使用pivot

groupby

或者,或者,使用In [321]: df = pd.DataFrame({'A':['a','a','b','c'],'B':[123,456,555,888]}) In [322]: df.groupby('A')['B'].apply(lambda x: pd.Series(x.values)).unstack() Out[322]: 0 1 A a 123.0 456.0 b 555.0 NaN c 888.0 NaN 为每个组分配正确的列号, 然后groupby/cumcount

pivot

答案 1 :(得分:0)

git clone -b

答案 2 :(得分:0)

如果您希望使用NaNs

保留相同数量的列
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