数据集的可重现代码:
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 和 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 循环”写入输出文件。
提前致谢。
我想通过'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)
有人能告诉我如何获得每个标签每月的计数值吗?
提前致谢.
我的数据中的日期变量有多种格式,例如 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 ×4
pandas ×2
count ×1
date ×1
for-loop ×1
multi-index ×1
parsing ×1
python-3.x ×1
time-series ×1