附加数据框时遇到问题

时间:2021-02-25 03:47:40

标签: python-3.x pandas

我想在通过 for 循环创建单个数据帧后访问和编辑它们。

#Let's get those files!!!
bdc_files = {'nwhl': 'https://raw.githubusercontent.com/bigdatacup/Big-Data-Cup-2021/main/hackathon_nwhl.csv',
 'olympics': 'https://raw.githubusercontent.com/bigdatacup/Big-Data-Cup-2021/main/hackathon_womens.csv',
 'erie': 'https://raw.githubusercontent.com/bigdatacup/Big-Data-Cup-2021/main/hackathon_scouting.csv'}

df_list = []
for (a,b) in bdc_files.items():
 #Grab csv file
 c = pd.read_csv(b)
 c.name = a
 #a = a.append(c)

 #Manipuling the Data as we please
 c['Game_ID'] = c['game_date'] + c['Home Team'] + c['Away Team']
 c['Detail 3'] = c['Detail 3'].replace('t', 'with traffic')
 c['Detail 3'] = c['Detail 3'].replace('f', 'without traffic')
 c['Detail 4'] = c['Detail 4'].replace('t', 'one-timer')
 c['Detail 4'] = c['Detail 4'].replace('f', 'not one-timer')
 c['Details'] = c['Detail 1'].astype(str).add(' ').add(c['Detail 2'].astype(str)).add(' ').add(c['Detail 3'].astype(str)).add(' ').add(c['Detail 4'].astype(str))

 c['is_goal'] = 0
 c['is_shot'] = 0
 c.loc[c['Event'] == 'Shot', 'is_shot'] = 1
 c.loc[c['Event'] == 'Goal', 'is_goal'] = 1
 c['Goal Differential'] = c['Home Team Goals'] - c['Away Team Goals']
 c['Clock'] = pd.to_datetime(c['Clock'], format = '%M:%S')
 c['Seconds Remaining'] = ((c['Clock'].dt.minute)*60) + (c['Clock'].dt.second)
 df_list.append(a)

 #Printing Datasheet info
 Title = "The sample of games from the {}".format(c.name) 
 print(c.name)
 print(Title + " dataset is:", len(list(c['Game_ID'].value_counts())))
 print(c['Event'].value_counts())
 print(c.columns.values)
 print(c.loc[c['Event'] == 'Shot', 'Details'].value_counts())
 print(c.head())
 print(c.info())

print(df_list)
print(nwhl)

但是,如果我想打印 nwhl 数据库,我会得到以下输出...

Empty DataFrame
Columns: []
Index: []

如果我要使用附加,我会得到这个错误

AttributeError: 'str' object has no attribute 'append'

长话短说,根据我拥有的代码,我如何能够使用 for 循环之外的数据框打印和执行其他任务?任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

使用数据框字典,df_dict:

添加

df_dict = {}
...
for (a,b) in bdc_files.items():
 #Grab csv file
 c = pd.read_csv(b)
 c.name = a
 # Add this line to build dictionary
 df_dict[a] = c

最后打印

df_dict['nwhl']