【问题标题】:Pandas - DatetimeIndex as column headingsPandas - DatetimeIndex 作为列标题
【发布时间】:2017-11-16 18:35:36
【问题描述】:

我有一个 438x14401 的数据框。我有一个 DateTimeIndex,它与数据框中的列的长度(宽度?)相同,现在只是标记为 1 - ...我正在尝试用我的 DateTimeIndex 中的日期替换这些值。

我正在尝试替换列标题 0 - 以 datetimeindex 值结尾,该值应该在长度上匹配。我试过用日期重命名列并合并它们,但没有成功。这有可能吗?

stations = stations.iloc[:,2:].rename(columns=v, inplace=True)

【问题讨论】:

  • 这感觉不对。为什么不使用日期时间作为索引?
  • 我试过了,但一直收到错误。我确实设法根据需要设置了 DataFrame,我将编辑原始帖子。理想情况下你是对的,那是最好的。

标签: python pandas multiple-columns heading


【解决方案1】:

您可以将您的DatetimeIndex 直接分配给stations.columns

样本df:

df = pd.DataFrame({'a': [1,2,3], 'b': [9,8,7], 'c': [7,5,1], 'd':[1,3,5]})
df
   a  b  c  d
0  1  9  7  1
1  2  8  5  3
2  3  7  1  5

some_date_range = pd.date_range('2017-01-01', periods=len(df.columns))

df.columns = some_date_range

df
   2017-01-01  2017-01-02  2017-01-03  2017-01-04
0           1           9           7           1
1           2           8           5           3
2           3           7           1           5

保留前两列值(引用 How do i change a single index value in pandas dataframe?,因为 Index 不支持可变操作):

aslist = df.columns.tolist()
aslist[2:] = pd.date_range('2017-01-01', periods=2)
df.columns = aslist
df
   a  b  2017-01-01 00:00:00  2017-01-02 00:00:00
0  1  9                    7                    1
1  2  8                    5                    3
2  3  7                    1                    5

【讨论】:

  • 我可以索引列的放置位置吗?例如,跳过前两列,哪些是坐标?我正在尝试完成此.iloc[:,2:],但不断收到长度不匹配的错误。
  • 看起来不是很干净,但我使用了以下答案-stackoverflow.com/questions/40427943/… ...查看编辑...您需要绝对确定长度匹配。
猜你喜欢
  • 1970-01-01
  • 2017-04-21
  • 2018-10-10
  • 2020-04-28
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
相关资源
最近更新 更多