首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pandas -根据其他列中的值向列中添加数据

Pandas -根据其他列中的值向列中添加数据
EN

Stack Overflow用户
提问于 2018-06-01 03:55:11
回答 1查看 182关注 0票数 1

所以我得到了这个。一个.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

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 04:02:59

您不需要遍历元组列表。请改用.merge()。假设对于df中的每个条目,您在rankings中都有一个条目,您需要:

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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50631849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档