python - 如何从“pandas.core.series.Series”中提取日期?
问题描述
我很难从“pandas.core.series.Series”中提取日期列。
这是我的代码:
import yfinance as yf
msft = yf.Ticker("GOOG")
print(msft.history(period = "max"))
输出:
Open High Low ... Volume Dividends Stock Splits
Date ...
2004-08-19 49.81 51.84 47.80 ... 44871300 0 0.0
2004-08-20 50.32 54.34 50.06 ... 22942800 0 0.0
2004-08-23 55.17 56.53 54.32 ... 18342800 0 0.0
2004-08-24 55.41 55.59 51.59 ... 15319700 0 0.0
2004-08-25 52.28 53.80 51.75 ... 9232100 0 0.0
... ... ... ... ... ... ... ...
2019-10-28 1275.45 1299.31 1272.54 ... 2613200 0 0.0
2019-10-29 1276.23 1281.59 1257.21 ... 1869200 0 0.0
2019-10-30 1252.97 1269.36 1252.00 ... 1407700 0 0.0
2019-10-31 1261.28 1267.67 1250.84 ... 145470000 0 0.0
2019-11-01 1265.00 1274.62 1260.50 ... 1669400 0 0.0
我想获得以下结果:
Date
2004-08-19
2004-08-20
2004-08-23
2004-08-24
2004-08-25
2019-10-28
2019-10-29
2019-10-30
2019-10-31
2019-11-01
我已经尝试研究并发现了一些想法:
pandas.Series.str.extract
并发现了一个类似的问题
从 pandas 数据框列中的 pandas.core.series.Series 中提取日期
但是作为初学者,我仍然不明白所谓的解决方案。
解决方案
如果您首先将完整的历史记录保存为数据框,则可以将索引提取到新的数据框:
import yfinance as yf
import pandas as pd
msft = yf.Ticker("GOOG")
df1 = msft.history(period="max")
print(df1)
这将输出与您的示例相同的输出,但现在保存在数据框中。下一个:
date = pd.DataFrame(columns=['date'])
date['date'] = df1.index.copy()
date
输出:
date 0 2004-08-19 1 2004-08-20 2 2004-08-23 3 2004-08-24 4 2004-08-25 ... ... 3824 2019-10-28 3825 2019-10-29 3826 2019-10-30 3827 2019-10-31 3828 2019-11-01
推荐阅读
- python - 查找一行中每个分组的累积总和,然后将分组设置为等于最大总和
- java - while 和 for 循环出现问题并使用 N 作为次数
- c# - LINQ XML 从多个 where 语句中获取元素的值
- python - 使用 python 和 selenium 如何获取值不是 utf-8 的占位符的值?
- csv - 将目录中的所有 CSV 文件上传到 Google Cloud
- java - Hashmap 中的值的总和不正确。迭代 1000 次但总值等于 1021
- php - PHP Require 调用上的错误 404,由区分大小写的差异引起
- java - LinkedList 实现指针是基于 Java 的吗?
- python-3.x - 莎拉的报价函数
- java - 如何让 JTextArea 使用其关键事件?