首页 > 解决方案 > 如何从“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 中提取日期

但是作为初学者,我仍然不明白所谓的解决方案。

标签: pythonpandas

解决方案


如果您首先将完整的历史记录保存为数据框,则可以将索引提取到新的数据框:

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

推荐阅读