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

巴士的乔

我是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按顺序分组,然后在列中找到最小值

从特定列中找到最大值,然后按它们分组

按分组值替换列数据

如何按列值分组?

如何按名称分组,然后仅选择R中每个分组的最大值?

Pandas DataFrame:如何按列中的值分组并从分组值中创建新列

如何按列值分组到索引中?

如何用熊猫中的交换值按两列分组?

如何对按熊猫中的分类列分组的值求和?

熊猫如何按列中的特定值分组?

如何按列分组并删除或分隔熊猫中的值?

如何选择多个计数(*)值然后按特定列分组

如何找到列差值最大的行对(按某列值分组)

按变量分组,然后查找 R 中每列的缺失值比例

如何在Excel中按年份然后按月份对列排序进行分组?

Pandas:如何按连续列值分组

mysql在多个列中按值分组

熊猫按列中的每个值分组

按一列分组,然后在熊猫中查找另一列的总和和最大值

按相关问题分组。如何从不是按列分组的列中获取唯一/不同的值?

在R中,如何按降序将数据按多列分组,然后给每个组从1开始的索引?

如何按日期对查询结果进行排序,然后按MySQL中的特定列值排序

按一列分组,然后对另一值列求和,对行进行计数,然后计算R中每个值的百分比

如何按列中的分组值过滤数据框中的值

如何在 SQL Server 中用 NULL 替换列中的值?

如何在文件中找到匹配的值,然后在另一个文件中替换该值?

按 ID 分组,然后检查两个特定列中的最后一行是否等于值

分割由管道分隔的系列,按单独的系列分组,然后在新列中返回每个分割值的计数

熊猫按行中的值替换列