python - 根据日期标准合并 Pandas 中的列

标签 python pandas

我有一个像这样的数据框

In[337]: df
Out[337]: 
                2013      2014      2015
2013-01-31  0.705935  0.983307  0.714397
2013-05-31  0.492020  0.532103  0.897666
2013-09-30  0.187822  0.779611  0.774774
2014-01-31  0.789511  0.383665  0.353669
2014-05-31  0.347580  0.540767  0.732863
2014-09-30  0.382052  0.960596  0.917685
2015-01-31  0.106079  0.622926  0.302552
2015-05-31  0.282134  0.195239  0.968098
2015-09-30  0.185158  0.410412  0.048988

我正在尝试根据索引中的年份将数据合并到新列中。例如“对于 2014-09-30 行,从‘2014’列中选择数据,0.960596”

Out[345]: 
                data
2013-01-31  0.705935
2013-05-31  0.492020
2013-09-30  0.187822
2014-01-31  0.383665
2014-05-31  0.540767
2014-09-30  0.960596
2015-01-31  0.302552
2015-05-31  0.968098
2015-09-30  0.048988

有没有一种方法可以通过 if 循环或其他方式巧妙地自动化此操作?

感谢您的帮助!

最佳答案

假设日期已解析,您可以执行以下操作:

df.apply(lambda row: row[str(row.name.year)], axis=1)

编辑:

这就是我正在寻找的:

pd.Series(
    df.lookup(
        row_labels=df.index,
        col_labels=df.index.year.astype(str)
    ),
    index=df.index
)

lookup方法为每个给定的行标签提供相应列标签处的值。此函数速度更快(如果我将数据帧重新采样为每小时一次,第一个方法的计时时间为约 3.5 秒,而 lookup 方法在约 20 毫秒内完成)。

关于python - 根据日期标准合并 Pandas 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38655042/

相关文章:

python - 如何在Elasticsearch中保存坐标以建立索引并在Kibana中使用它们

python - 在 Pandas 中导入 excel 文件出现错误

Pandas read_sql 没有读取所有行

python - 一种使用 Pandas 根据相应行将决策写入列的快速方法?

python - 将向量放入矩阵+变换中

python - 如何使用 django ejabberd 桥对用户进行身份验证

python - virtualenvwrapper.sh 使 shell 崩溃

Python:如何将计数器对象添加到数据框?

python - 更快地组合大型数据集的日期、小时和间隔列的方法

python - 在pandas python中将指数或科学数转换为整数