gpt4 book ai didi

python - 在多索引 Pandas 中遍历 level=1 中的每个索引项

转载 作者:行者123 更新时间:2023-11-28 18:31:54 25 4
gpt4 key购买 nike

我有以下数据框:

import pandas as pd
import datetime as dt
from dateutil.rrule import rrule, MONTHLY

df = pd.DataFrame({
'value' : [4,2,5,6,7,8,6,5,4,1,2,4],
'date': fread_year_month(dt.datetime(2015, 1, 1),dt.datetime(2015, 12, 1)),
'stock': ['amzn']*12
},columns=[
'value', 'date', 'stock'] )

df2 = pd.DataFrame({
'value' : [1]*11,
'date': fread_year_month(dt.datetime(2015, 1, 1),dt.datetime(2015, 11, 1)),
'stock': ['msft']*11
},columns=[
'value', 'date', 'stock'] )

df = df.append(df2)

df.set_index(['stock', 'date'], inplace=True)

def fread_year_month(strt_dt, end_dt):
dates = [dt for dt in rrule(MONTHLY, dtstart=strt_dt, until=end_dt)]
return dates

我想在此数据框中插入一列,其中与相应索引级别相关联的年月天数=1。

我不确定如何遍历 level=1 中的每个索引值。

如果我能弄清楚如何遍历 level=1 中的每个项目,那么我可以简单地执行以下操作:

calendar.monthrange(x.year, x.month)[1]

最佳答案

这是你想要的吗?

In [89]: df['days'] = df.index.get_level_values('date').days_in_month

In [90]: df
Out[90]:
value days
stock date
amzn 2015-01-01 4 31
2015-02-01 2 28
2015-03-01 5 31
2015-04-01 6 30
2015-05-01 7 31
2015-06-01 8 30
2015-07-01 6 31
2015-08-01 5 31
2015-09-01 4 30
2015-10-01 1 31
2015-11-01 2 30
2015-12-01 4 31
msft 2015-01-01 1 31
2015-02-01 1 28
2015-03-01 1 31
2015-04-01 1 30
2015-05-01 1 31
2015-06-01 1 30
2015-07-01 1 31
2015-08-01 1 31
2015-09-01 1 30
2015-10-01 1 31
2015-11-01 1 30

关于python - 在多索引 Pandas 中遍历 level=1 中的每个索引项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com