获取多索引中的日期索引值 pandas
Getting date index value in a multi index pandas
我有以下数据框:
a = df['Low'].groupby(['week']).min()
week
1 1699
2 1721
3 1741
4 1809
...
28 2592
29 2570
30 2696
31 2683
53 1735
Name: Low, dtype: int32
要在此获取日期,我使用此功能:
df[df['Low'].isin([1735])]['Date1']
Date week day
2020-12-31 53 31 2020-12-31
Name: Date1, dtype: datetime64[ns]
为了获取这些值出现的所有日期,我使用了 for 循环:
for stuff in low:
df[df['Low'].isin([stuff])]['Date1']
产生:
MultiIndex([('2021-01-06', 1, 6)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-01-15', 2, 15)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-01-19', 3, 19)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-01-27', 4, 27)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-02-01', 5, 1)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-02-10', 6, 10)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-02-19', 7, 19)],
names=['Date', 'week', 'day'])
反正我在那里我可以得到日期? df 看起来像这样:
High Low Open Close Volume Adj Close Date1 month
Date week day
2020-12-31 53 31 1758.930054 1735 1735.420044 1751.880005 1011900 1751.880005 2020-12-31 12
2021-01-04 1 4 1760.650024 1707 1757.540039 1728.239990 1901900 1728.239990 2021-01-04 1
2021-01-05 1 5 1747.670044 1718 1725.000000 1740.920044 1145300 1740.920044 2021-01-05 1
2021-01-06 1 6 1748.000000 1699 1702.630005 1735.290039 2602100 1735.290039 2021-01-06 1
2021-01-07 1 7 1788.400024 1737 1740.060059 1787.250000 2265000 1787.250000 2021-01-07 1
... ... ... ... ... ... ... ... ... ... ...
2021-08-02 31 2 2720.409912 2693 2709.689941 2719.790039 1007000 2719.790039 2021-08-02 8
2021-08-03 31 3 2726.709961 2683 2720.000000 2725.600098 953200 2725.600098 2021-08-03 8
2021-08-04 31 4 2730.760010 2708 2724.989990 2720.570068 826400 2720.570068 2021-08-04 8
2021-08-05 31 5 2739.000000 2712 2720.570068 2738.800049 593300 2738.800049 2021-08-05 8
2021-08-06 31 6 2741.601074 2720 2725.899902 2740.719971 678000 2740.719971 2021-08-06 8
151 rows × 8 columns
要获取多级索引的特定值,您可以简单地使用:
df.index.get_level_values('Date')
或
df.index.get_level_values(0)
您可以像这样将其应用于您的 for 循环:
for stuff in low:
df[df['Low'].isin([stuff])]['Date1'].index.get_level_values('Date')
我有以下数据框:
a = df['Low'].groupby(['week']).min()
week
1 1699
2 1721
3 1741
4 1809
...
28 2592
29 2570
30 2696
31 2683
53 1735
Name: Low, dtype: int32
要在此获取日期,我使用此功能:
df[df['Low'].isin([1735])]['Date1']
Date week day
2020-12-31 53 31 2020-12-31
Name: Date1, dtype: datetime64[ns]
为了获取这些值出现的所有日期,我使用了 for 循环:
for stuff in low:
df[df['Low'].isin([stuff])]['Date1']
产生:
MultiIndex([('2021-01-06', 1, 6)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-01-15', 2, 15)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-01-19', 3, 19)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-01-27', 4, 27)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-02-01', 5, 1)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-02-10', 6, 10)],
names=['Date', 'week', 'day'])
MultiIndex([('2021-02-19', 7, 19)],
names=['Date', 'week', 'day'])
反正我在那里我可以得到日期? df 看起来像这样:
High Low Open Close Volume Adj Close Date1 month
Date week day
2020-12-31 53 31 1758.930054 1735 1735.420044 1751.880005 1011900 1751.880005 2020-12-31 12
2021-01-04 1 4 1760.650024 1707 1757.540039 1728.239990 1901900 1728.239990 2021-01-04 1
2021-01-05 1 5 1747.670044 1718 1725.000000 1740.920044 1145300 1740.920044 2021-01-05 1
2021-01-06 1 6 1748.000000 1699 1702.630005 1735.290039 2602100 1735.290039 2021-01-06 1
2021-01-07 1 7 1788.400024 1737 1740.060059 1787.250000 2265000 1787.250000 2021-01-07 1
... ... ... ... ... ... ... ... ... ... ...
2021-08-02 31 2 2720.409912 2693 2709.689941 2719.790039 1007000 2719.790039 2021-08-02 8
2021-08-03 31 3 2726.709961 2683 2720.000000 2725.600098 953200 2725.600098 2021-08-03 8
2021-08-04 31 4 2730.760010 2708 2724.989990 2720.570068 826400 2720.570068 2021-08-04 8
2021-08-05 31 5 2739.000000 2712 2720.570068 2738.800049 593300 2738.800049 2021-08-05 8
2021-08-06 31 6 2741.601074 2720 2725.899902 2740.719971 678000 2740.719971 2021-08-06 8
151 rows × 8 columns
要获取多级索引的特定值,您可以简单地使用:
df.index.get_level_values('Date')
或
df.index.get_level_values(0)
您可以像这样将其应用于您的 for 循环:
for stuff in low:
df[df['Low'].isin([stuff])]['Date1'].index.get_level_values('Date')