Python 从列表中创建多个数据帧
我有一个足球统计数据的csv文件,我想计算一些关键统计数据的跑步平均值。我能想到的唯一方法是为每个团队创建一个熊猫数据框架,进行计算,然后将信息添加回原始数据框架。在这里,我想浏览一下团队列表,并为每个团队创建一个数据框架。我能做这个吗?以下是我所拥有的:Python 从列表中创建多个数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个足球统计数据的csv文件,我想计算一些关键统计数据的跑步平均值。我能想到的唯一方法是为每个团队创建一个熊猫数据框架,进行计算,然后将信息添加回原始数据框架。在这里,我想浏览一下团队列表,并为每个团队创建一个数据框架。我能做这个吗?以下是我所拥有的: teamlist = [] for x in df['team1']: if x not in teamlist: teamlist.append(x) #here's what I would use to crea
teamlist = []
for x in df['team1']:
if x not in teamlist:
teamlist.append(x)
#here's what I would use to create 1 dataframe
arsenal = df.loc[df['team1']=='Arsenal']
for x in teamlist:
something = df.loc[df['team1']== x]
如果我有“某物”,我希望有“H”+x+“df”
例如,数据帧被称为HArsenaldf
此外,如果有一种更简单的方法来计算数据帧中某些行的移动平均数,那就太好了。您需要进行转换,如下面的示例所示:
import pandas as pd
df = pd.DataFrame({'Team': list('AAAAABBB'),
'Score': range(1,9)})
df['RunningAvg'] = df.groupby('Team')['Score'].transform(lambda x: x.expanding().mean())
df
# Score Team RunningAvg
#0 1 A 1.0
#1 2 A 1.5
#2 3 A 2.0
#3 4 A 2.5
#4 5 A 3.0
#5 6 B 6.0
#6 7 B 6.5
#7 8 B 7.0
嗯,创建多个数据帧不是一个好主意,您可以创建一个daraframe并创建一个函数,您可以在其中应用移动平均值,然后通过此代码传递数据
df.groupby('column_name')。apply(lambda x:yourfunctionanmehere(x))
其中x将访问您的所有数据列。谢谢你的评论。首先,当我运行此命令时,我得到以下错误:AttributeError:'SeriesGroupBy'对象没有属性'mean'。其次,我忘了提到我正在尝试做一个5点移动平均线。我想我现在已经用(lambda x:x.rolling(5.mean())。@Buck_Shot当然,但是rolling()
中的5
是一个窗口,我想你不想要窗口化的平均线,而是一个正在进行的,扩展,一个。有了这个细节,事情会简单得多:)