2016-02-11 75 views
0

我有以下代码。将值附加到python列表中

rushingyards = 0 
passingyards = 0 
templist = [] 
combineddf = play.groupby(['GameCode','PlayType']).sum() 
combineddf.to_csv('data/combined.csv', sep=',') 
combineddff =pd.DataFrame.from_csv('data/combined.csv') 
temp = {} 
for row in combineddff.itertuples(): 
    if row[1] in ('RUSH', 'PASS'): 
     temp['GameCode'] = row[0] 
     if row[1] == 'RUSH': 
      temp['Rushingyards'] = row[10] 
     else: 
      temp['PassingYards'] = row[10] 

    else: 
     continue 
    templist.append(temp) 

我的联合csv的头在下面。

    PlayType PlayNumber PeriodNumber Clock OffenseTeamCode \ 
GameCode                  
2047220131026  ATTEMPT   779   19 2220    1896 
2047220131026 FIELD_GOAL   351    9 1057    946 
2047220131026  KICKOFF  1244   32 4388    3316 
2047220131026  PASS  8200   204 6549   14730 
2047220131026  PENALTY  1148   29 1481    2372 

       DefenseTeamCode OffensePoints DefensePoints Down Distance \ 
GameCode                  
2047220131026    1896   142   123 NaN  NaN 
2047220131026    476    52    51 12  17 
2047220131026    2846   231   195 NaN  NaN 
2047220131026   23190   1131   1405 147  720 
2047220131026    2842   188   198 19  84 

       Spot DriveNumber DrivePlay 
GameCode          
2047220131026 24   NaN  NaN 
2047220131026 19   49   3 
2047220131026 850   NaN  NaN 
2047220131026 3719   1161   80 
2047220131026 514   164   1 

我必须检查playtype是Rush还是pass,并相应地创建一个如下列表。

Gamecode  rushing_yards passingyards 
    299004720130829  893   401 
    299004720130824  450   657 
    299004720130821  430   357 

我无法正确追加值。 Evey运行它的时间,它给出了所有类似的游戏代码,rushing_yards和passingyards的值。请帮助。

+0

您可以通过将代码简化为问题的最小示例来改善此问题。请参阅https://stackoverflow.com/help/mcve –

回答

0

这是因为您正在追加对象temp的引用。你基本上只是存储对同一个对象的引用,这会导致所有对象的值相同。把你的临时代码放在for循环中,你应该看到这个问题的解决方案,因为它在循环中每次迭代时都实例化一个新的代码对象。