【发布时间】:2016-10-16 04:59:51
【问题描述】:
我有一个数据框:
import pandas as pd
df=pd.DataFrame({
'Player': ['John','John','John','Steve','Steve','Ted', 'James','Smitty','SmittyJr','DJ'],
'Name': ['A','B', 'A','B','B','C', 'A','D','D','D'],
'Group':['2A','1B','2A','2A','1B','1C','2A','1C','1C','2A'],
'Medal':['G', '?', '?', 'S', 'B','?','?','?','G','?']
})
df = df[['Player','Group', 'Name', 'Medal']]
print(df)
我想更新所有的 '?'在 Medal 列中,其中任何行的值与已填充的 Name 和 Group 列匹配。
例如,因为第一个 row 0 是 Name:A, Group:2A, Medal:G,那么 '?'在row 6 和2 上将是“G”
结果应如下所示:
res=pd.DataFrame({
'Player': ['John','John','John','Steve','Steve','Ted', 'James','Smitty','SmittyJr','DJ'],
'Name': ['A','B', 'A','B','B','C', 'A','D','D','D'],
'Group':['2A','1B','2A','2A','1B','1C','2A','1C','1C','2A'],
'Medal':['G', 'B', 'G', 'S', 'B','?','G','G','G','?']
})
res = res[['Player','Group', 'Name', 'Medal']]
print(res)
最有效的方法是什么?
【问题讨论】:
标签: python pandas dataframe iteration conditional-statements