大熊猫将单行转换为列

时间:2019-04-11 14:30:39

标签: python-3.x pandas

我正在尝试将单列转换为行,并获取该行的相应值作为其列。

我尝试使用数据透视表,但是它为我提供了所有其他没有特定对应值的列的空值,但是它不希望数据框中包含NaN。

我在数据框df下方:

week          value            
1       1234
1       5678
1       9856
1       5486
1       4569
2       1234
2       5869
2       4865
2       5589

我尝试过

df1 = df.pivot(columns='week',values='value') 

这段代码返回带有NaN的数据帧,我想消除所有的NaN并获取每个星期的值。结果如下所示。我已经添加了预期的输出和实际的输出。

预期结果是:

1       2
1234   1234   
5678   5869
9856   4865
5486   5589
4569   NaN

实际结果是

1       2
1234   NaN
5678   NaN
9856   NaN
5486   NaN
4569   1234   
NaN     5869
NaN     4865
NaN     5589

我要删除NaN并对齐属于该特定星期的值。

1 个答案:

答案 0 :(得分:1)

不是最干净的方法,但这可以完成工作:

df = pd.DataFrame({'week':[1]*4 + [2]*5 + [3]*7, 'value':np.arange(16)})

df.groupby('week').value.apply(list).apply(pd.Series).T

输出:

+------+-----+-----+------+
| week |  1  |  2  |  3   |
+------+-----+-----+------+
|    0 | 0.0 | 4.0 | 9.0  |
|    1 | 1.0 | 5.0 | 10.0 |
|    2 | 2.0 | 6.0 | 11.0 |
|    3 | 3.0 | 7.0 | 12.0 |
|    4 | NaN | 8.0 | 13.0 |
|    5 | NaN | NaN | 14.0 |
|    6 | NaN | NaN | 15.0 |
+------+-----+-----+------+
相关问题