【问题标题】:Python Pandas - Date Column to Column indexPython Pandas - 日期列到列索引
【发布时间】:2013-04-01 21:43:42
【问题描述】:

我有一个从 CSV 文件导入 DataFrame 的数据表。

数据包含大约 10 个分类字段,1 个月列(日期时间格式),其余为数据系列。

如何将日期列转换为跨列轴的索引?

【问题讨论】:

  • 如果您使用 index_colparse_dates=True 调用函数,read_csv 会自行执行此操作

标签: python dataframe pandas


【解决方案1】:

你可以使用set_index:

df.set_index('month')

例如:

In [1]: df = pd.DataFrame([[1, datetime(2011,1,1)], [2, datetime(2011,1,2)]], columns=['a', 'b'])

In [2]: df
Out[2]: 
   a                   b
0  1 2011-01-01 00:00:00
1  2 2011-01-02 00:00:00

In [3]: df.set_index('b')
Out[3]: 
            a
b            
2011-01-01  1
2011-01-02  2

【讨论】:

  • 谢谢安迪 我可以设置索引以使日期沿另一个轴吗?这会将值分组吗?
  • 你能举一个你有的和你想要的例子吗?我不确定将日期列设为列索引有什么意义……它不会对值进行分组,这会使一列成为索引。 :)
  • 我希望数据排列成每列代表 1 个月。表中的每一行代表一个不同的时间序列。那有意义吗?我会用表格来演示,但我不知道如何在这个网站上插入表格。
  • 一个相关的问题是:如何在分层索引中将项目从一个索引轴转移到另一个?
  • 查看文档中的 stack() 和 unstack()。如需更多帮助,请提供更多详细信息。 (插入表格没有什么特别的技巧——只需使用空格。)
【解决方案2】:

我遇到了类似的问题,我刚刚通过 reset_index 解决了。但你可以使用 set_index 或 reset_index:

df_ind = df.set_index(['A', 'B'])

或者

df.reset_index(level=0, inplace=True)

【讨论】:

    【解决方案3】:

    如果提前不知道日期列的名称,需要根据数据中的时间序列列自动设置索引

    df.set_index((df.select_dtypes(include=[np.datetime64]).columns).tolist())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 2015-07-02
      • 2017-04-15
      • 2017-03-04
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      相关资源
      最近更新 更多