我是 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”的单元格,并将它们替换为“loser”列/行中表示“yes”的相应“名称” ”
到目前为止我所做的是使用 groupby 对数据框进行排序:
d = pd.read_excel('nameoffile.xls', sheet_name='jw')
df = pd.DataFrame(d)
df1 = dict(tuple(df.groupby('sortvalue')))
这给我返回了一系列按“sortvalue”排序的字典。但我不知道如何编写迭代这些字典的函数,以将胜利中的"is"替换为“失败者”中说"is"的列中的“名称”。而且我也不确定 groupby 是否是正确的做法。编一本字典合适吗?
最佳答案
按yes
值过滤DataFrame,重命名
列并使用DataFrame.merge
:
df1 = df.loc[df['win'] == 'yes', ['name','sortvalue']].rename(columns={'name':'win'})
df2 = df.loc[df['loser'] == 'yes', ['name','sortvalue']].rename(columns={'name':'loser'})
df = pd.merge(df1, df2, on='sortvalue')[['win','loser','sortvalue']]
print (df)
win loser sortvalue
0 joe jan car1
1 joe stan car1
2 josh fred car2
关于python - 如何按列中的值分组,找到空值,然后替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57471500/