我正在尝试将单列转换为行,并获取该行的相应值作为其列。
我尝试使用数据透视表,但是它为我提供了所有其他没有特定对应值的列的空值,但是它不希望数据框中包含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并对齐属于该特定星期的值。
答案 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 |
+------+-----+-----+------+