小编vis*_*nth的帖子

在multiindex数据框中查找列的最大值并返回其所有值

数据集的可重现代码:

df = {'player' : ['a','a','a','a','a','a','a','a','a','b','b','b','b','b','b','b','b','b','c','c','c','c','c','c','c','c','c'],
      'week' : ['1','1','1','2','2','2','3','3','3','1','1','1','2','2','2','3','3','3','1','1','1','2','2','2','3','3','3'],
      'category': ['RES','VIT','MATCH','RES','VIT','MATCH','RES','VIT','MATCH','RES','VIT','MATCH','RES','VIT','MATCH','RES','VIT','MATCH','RES','VIT','MATCH','RES','VIT','MATCH','RES','VIT','MATCH'],
      'energy' : [75,54,87,65,24,82,65,42,35,25,45,87,98,54,82,75,54,87,65,24,82,65,42,35,25,45,98] }

df = pd.DataFrame(data= df)
df = df[['player', 'week', 'category','energy']]
Run Code Online (Sandbox Code Playgroud)

实际数据集

我需要找到"对于每个玩家,找到他能量最大的那一周并显示所有类别,那个星期的能量值"

所以我做的是:

1.设置播放器和周作为索引

2.迭代索引以找到能量的最大值并返回其值

df = df.set_index(['player', 'week'])

for index, row in df1.iterrows():
    group = df1.ix[df1['energy'].idxmax()]
Run Code Online (Sandbox Code Playgroud)

获得的产出:

                category energy
  player   week     
    b        2    RES      98
             2    VIT      54
             2   MATCH     82
Run Code Online (Sandbox Code Playgroud)

这个获得的输出是针对整个数据集中的最大能量,我希望每个玩家拥有所有其他类别的最大值以及该周的能量.

预期产出:

预期产出

我已尝试使用评论中建议的groupby方法,

df.groupby(['player','week'])['energy'].max().groupby(level=['player','week'])
Run Code Online (Sandbox Code Playgroud)

获得的输出是:

                energy  category
 player week        
   a     1        87    VIT
         2        82    VIT
         3        65    VIT
   b     1        87    VIT
         2        98 …
Run Code Online (Sandbox Code Playgroud)

python multi-index python-3.x pandas

6
推荐指数
1
解决办法
309
查看次数

在python中使用Prophet预测每个类别的值

我对在 Python 和 Prophet 中做时间序列很陌生。我有一个包含变量文章代码、日期和销售数量的数据集。我正在尝试使用 Python 中的 Prophet 预测每个月每篇文章的销售数量。数据集

我尝试使用 for 循环对每篇文章进行预测,但我不确定如何在输出(预测)数据中显示文章类型,并将其直接从“for 循环”写入文件。

df2 = df2.rename(columns={'Date of the document': 'ds','Quantity sold': 'y'})
for article in df2['Article bar code']:

    # set the uncertainty interval to 95% (the Prophet default is 80%)
    my_model = Prophet(weekly_seasonality= True, daily_seasonality=True,seasonality_prior_scale=1.0)
    my_model.fit(df2)
    future_dates = my_model.make_future_dataframe(periods=6, freq='MS')
    forecast = my_model.predict(future_dates)
return forecast
Run Code Online (Sandbox Code Playgroud)

我想要如下输出,并希望将其直接从“for 循环”写入输出文件。

预期产出

提前致谢。

python for-loop time-series facebook-prophet

4
推荐指数
1
解决办法
3716
查看次数

如何将groupby值的总和除以另一个值的count

我想通过'label'和'month'分组来计算每个月和每个标签的销售数量.

数据集

我正在尝试'groupby和apply'方法来实现这一目标,但不确定如何计算每个标签的月份.比方说,对于标签值AFFLELOU(DOS),我有7个月的两个值.因此,我应该将销售数量除以2除以第9个月和第10个月,我只有一个值,所以计数为1,它将除去销售数量.

我编写了下面的代码,但它不会将count作为函数并且返回计数未定义错误.

t1.groupby(['label', 'month']).apply(lambda x: x['Quantity sold'] 
.sum()/count('month'))
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何获得每个标签每月的计数值吗?

提前致谢.

python count pandas pandas-groupby

4
推荐指数
1
解决办法
2117
查看次数

python 将多种日期格式转换为一种格式

我的数据中的日期变量有多种格式,例如 DD/MM/YYYY D/MM/YY DD/M/YYYY 12/8/2017 27/08/17 8/9/2017 10/9/2017 15/09/ 17..

我需要将这些多种格式更改为一种格式,例如 DD/MM/YYYY

尝试创建一个解析函数

def parse_date(date):
if date == '':
    return None
else:
    return dt.strptime(date, '%d/%m/%y').date()
Run Code Online (Sandbox Code Playgroud)

当我将此函数应用于我的数据集时,它会抛出以下错误。

“() 中的 ValueError Traceback(最近一次调用最后一次)----> 1 data.Date = data.Date.apply(parse_date)

未转换的数据仍然存在错误 ValueError:未转换的数据仍然存在:17"

如何解决未转换数据仍然存在错误?

python parsing date

1
推荐指数
1
解决办法
5495
查看次数