Панды - Добавить данные в столбец на основе значений в других столбцах - PullRequest
0 голосов
/ 31 мая 2018

Так что я по сути получил это.Файл .csv:

,year,team,tr_diff,ranking
0,2010,ADO Den Haag,3.9473684210526314,N/A
1,2011,ADO Den Haag,1.5120274914089347,N/A
2,2012,ADO Den Haag,-1.2320328542094456,N/A
3,2013,ADO Den Haag,-3.757828810020877,N/A

И это мой код:

rankings = [('ADO Den Haag', 12, 2010), ('ADO Den Haag', 16, 2011), .... ('ADO Den Haag', 12, 2013)]

df = pd.read_csv('preliminary.csv')
for tuple in rankings:      
    df.loc[(df['team'] == tuple[0]) & (df['year'] == tuple[2]), 'ranking'] = tuple[1]

Цель состоит в том, чтобы найти столбец, который имеет правильное название команды и год, и добавить к немув столбце «Ранжирование» укажите рейтинг, который можно найти во втором элементе кортежа.Как я могу это сделать?Этот код не вызывает никаких ошибок, но он не делает то, что я хочу.Вот на что я надеюсь.

,year,team,tr_diff,ranking
0,2010,ADO Den Haag,3.9473684210526314,12
1,2011,ADO Den Haag,1.5120274914089347,16
2,2012,ADO Den Haag,-1.2320328542094456,14
3,2013,ADO Den Haag,-3.757828810020877,15
4,2014,ADO Den Haag,2.5974025974025974,11
5,2015,ADO Den Haag,3.4702549575070822,8
6,2016,ADO Den Haag,-4.3626448534424,12

Что я делаю не так?

1 Ответ

0 голосов
/ 31 мая 2018

Вам не нужно перебирать список кортежей.Вместо этого используйте .merge () .Предполагая, что у вас есть одна запись в rankings для каждой записи в df Вам необходимо:

ranking_df = pd.DataFrame(rankings, columns=['team', 'ranking', 'year'])
new_df = df.drop(['ranking'], axis=1).merge(ranking_df, on=['team', 'year'], how='left')

Ввод:

     year   team             tr_diff    ranking
0   2010    ADO Den Haag    3.947368    NaN
1   2011    ADO Den Haag    1.512027    NaN
2   2012    ADO Den Haag    -1.232033   NaN
3   2013    ADO Den Haag    -3.757829   NaN

Выход:

    year    team             tr_diff    ranking
0   2010    ADO Den Haag    3.947368    12.0
1   2011    ADO Den Haag    1.512027    16.0
2   2012    ADO Den Haag    -1.232033   NaN
3   2013    ADO Den Haag    -3.757829   NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...