【问题标题】:Pandas How to set the date as the index, and is it a good idea?Pandas 如何将日期设置为索引,这是一个好主意吗?
【发布时间】: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


【解决方案1】:

来自克里斯离开的评论:

df.drop_duplicates().pivot('Date','DestUserName', 'Percent') or 
df.drop_duplicates().set_index(['Date', 'DestUserName']).unstack(1)

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 2013-03-03
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多