我有一个像这样的数据框
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/