I have the following dataframe:
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
To get a date in this i use this function:
df[df['Low'].isin([1735])]['Date1']
Date week day
2020-12-31 53 31 2020-12-31
Name: Date1, dtype: datetime64[ns]
To get all the dates when these values occured i used a for loop:
for stuff in low:
df[df['Low'].isin([stuff])]['Date1']
Which produces :
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'])
I there anyway i could just get the dates? The df looks like this:
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
To get a certain value of a multi level index you can simply use:
df.index.get_level_values('Date')
or
df.index.get_level_values(0)
You could apply this to your for loop like this:
for stuff in low:
df[df['Low'].isin([stuff])]['Date1'].index.get_level_values('Date')