python - 如何按列中的值分组,找到空值,然后替换

标签 python pandas

我是 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/

相关文章:

python - pandas 的错误/功能,其中按日期过滤的多索引数据框在提取日期索引级别时返回所有未过滤的日期

python - 修复 NetworkX spring 图中节点子集的位置

python - 如何在 matplotlib 中使用(随机)*.otf 或 *.ttf 字体?

python - 如何根据条件复制数据框行

arrays - 如何创建二维以上的 Pandas 数据框?

python - Python 中的 Jupyter Lab 中不显示 Plotly 表?

python - 如何在 python 中将一个列表的异构列表展平为一个列表?

Python:过滤 Pandas 数据框以根据列保留指定的行数

python - 获取组内的最大值,但不仅仅是第一个(ex æquo 也是如此)

python - 使用就地掩码的工作方式不同吗?