【发布时间】:2019-06-26 11:46:42
【问题描述】:
我有一个包含 3 列的 pandas 数据框:
df
Date DestUserName Percent
0 2019-01-01 100 1.000000
1 2019-01-01 101 1.000000
2 2019-01-01 102 1.000000
3 2019-01-01 103 1.000000
4 2019-01-02 100 1.000000
5 2019-01-02 101 0.923077
6 2019-01-02 103 0.800000
7 2019-01-02 100 1.000000
8 2019-01-03 103 0.800000
9 2019-01-03 102 1.000000
10 2019-01-03 101 1.000000
11 2019-01-04 100 1.000000
11 2019-01-04 102 1.000000
11 2019-01-04 103 0.972222
df.dtypes
Date object
DestUserName object
Percent float64
dtype: object
我希望翻转数据,以便日期(字符串)是第一列或索引,用户名/用户 ID(字符串)是列名,百分比(float64)是单元格中的数据像下面这样:
100 101 102 103
2019-01-01 1.000000 1.000000 1.000000 1.000000
2019-01-02 1.000000 0.923077 NaN 0.800000
2019-01-03 NaN 1.000000 1.000000 0.800000
2019-01-04 1.000000 NaN 1.000000 0.972222
完成此任务的最佳方法是什么?我以前见过这个,但是将 Date(string) 存储为索引是个好主意还是坏主意?
【问题讨论】:
-
日期索引没有问题。您可以使用
pivot_table或unstack之类的基本整形操作来完成您需要的操作。但是,您有两行Date=2019-01-02和DestUserName=100。在这种情况下,您预计会发生什么? -
df.drop_duplicates().pivot('Date','DestUserName', 'Percent')或df.drop_duplicates().set_index(['Date', 'DestUserName']).unstack(1)根据@IgorRaush 的建议
标签: python python-3.x pandas