如何根据天数遍历Pandas中的数据集?

2024-06-25 06:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码

import yfinance as yf

data = yf.download("EURUSD=X", period = "max", group_by = "ticker")

for label, content in data.items():
   print('label:', label)
   print('content:', content, sep='\n')`

我试图通过这个数据集,计算欧元兑美元外汇对在同一个日历日的表现,例如“3/11”,因为从一开始,计算对上涨的天数和下跌的天数意味着什么。我试着引用熊猫文档,但代码似乎没有意义

data looks like that: 
                Open      High       Low     Close  Adj Close  Volume
Date                                                                 
2003-12-01  1.203398  1.204007  1.194401  1.196501   1.196501       0
2003-12-02  1.196101  1.210903  1.194600  1.208897   1.208897       0
2003-12-03  1.209000  1.213003  1.207700  1.212298   1.212298       0
2003-12-04  1.212004  1.214403  1.204398  1.208094   1.208094       0
2003-12-05  1.207802  1.219096  1.206593  1.218695   1.218695       0
...              ...       ...       ...       ...        ...     ...
2019-11-18  1.105400  1.109100  1.105400  1.105510   1.105510       0
2019-11-19  1.107224  1.108525  1.106427  1.107236   1.107236       0
2019-11-20  1.108033  1.108279  1.105363  1.108000   1.108000       0
2019-11-21  1.107898  1.109644  1.106378  1.107886   1.107886       0
2019-11-22  1.106562  1.107861  1.102864  1.106586   1.106586       0

[4140 rows x 6 columns]

我想要的输出:

[["2019-11-20", 1.108033, 1.108279, 1.105363, 1.108000, 1.108000, 0.0],
["2018-11-20", 1,.108033, 1.108279, 1.105363, 1.108000, 1.108000, 0.0],
["2017-11-20", 1.108033, 1.108279, 1.105363, 1.108000, 1.108000, 0.0],
["2016-11-20", 1.108033, 1.108279, 1.105363, 1.108000, 1.108000, 0.0],
["2015-11-20", 1.108033, 1.108279, 1.105363, 1.108000, 1.108000, 0.0],
["2014-11-20", 1.108033, 1.108279, 1.105363, 1.108000, 1.108000, 0.0]]

Tags: 代码importclosedatadownloadascontentlabel
2条回答

可以按索引进行子集

data2 = data.loc[(data.index.month == 11) & (data.index.day == 10)]

您的索引是datetime类型,并且希望将其转换为字符串。首先我们需要重新设置索引

data2 = data2.reset_index()
data2["Date"] = data2["Date"].astype(str)

然后以列表列表的形式获取行(示例输出)

data2.values.tolist()

您需要将日期split分为三列:“年”、“月”、“日”。 然后简单地做一个选择,比如

newdf=df[df["Day"]==20 & df["Month"]==11]

然后你可以对这个新的df进行分析

翻译代码的意思是“复制df中的所有值,其中Month是11,Day是20”

相关问题 更多 >