我是Python的新手,我迷路了。
我有一个名为d的数据框,如下所示:
name win loser sortvalue
joe yes car1
jan yes car1
stan yes car1
fred yes car2
josh yes car2
我希望它看起来像这样:
win loser sortvalue
joe jan car1
joe stan car1
josh fred car2
因此,我想按“ sortvalue”对它进行排序,然后在“ win”列中找到“ yes”的单元格,并在“失败者”列/行中将相应的“ name”替换为“ yes”。
到目前为止,我所做的是使用groupby对数据框进行排序:
d = pd.read_excel('nameoffile.xls', sheet_name='jw')
df = pd.DataFrame(d)
df1 = dict(tuple(df.groupby('sortvalue')))
这给了我一系列按“ sortvalue”排序的字典。但是我无法弄清楚如何编写遍历这些词典的函数,以用“失败者”中表示“是”的列中的“名称”替换胜利中的“是”。而且我也不确定groupby是否正确。制作字典对吗?
也许是使用类似于first ans的逻辑的更简单版本。
d = [['joe','yes',np.nan,'cart1'],['jan',np.nan,'yes','cart1'],['stan',np.nan,'yes','cart1'],['fred',np.nan,'yes','cart2'],['stan','yes',np.nan,'cart2']]
d = pd.DataFrame(data=d,columns=['name','win','lose','value'])
d1 = d[d['win']=='yes'].loc[:,['name','value']]
d2 = d[d['lose']=='yes'].loc[:,['name','value']]
d1['winner']=d1['name']
d2['loser']=d2['name']
ans = pd.merge(d1,d2,on='value').loc[:,['winner','loser','value']]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句