pandas 如何根据条件对数据框中的特定行赋值?

gk7wooem  于 2023-01-11  发布在  其他
关注(0)|答案(1)|浏览(116)

数据集示例:

我有这个数据集,其中有多个行和列,其中我们有列:事务S.No从1开始,一直到当天发生的事务,我们需要创建一个新列,并为其赋值1,其中例如:对于一个客户,存在多个行,因此多个交易的范围从1到......等等。因此,如果该客户的最高交易S.No是5,我们希望将值1分配给索引列中的该特定行,并且对于该客户,其余行应该为空。类似地,对于所有其他客户,其最高交易S.No应该获得值1,如果只进行了一笔交易,例如只有一笔交易的客户,则应输入1。

df.groupby('Accession Number')['Transaction S.No'].max()

试过这个,它说每个客户号的最大交易,但现在如何分配1值给它?

a2mppw5e

a2mppw5e1#

这个答案是可行的,但可能不是最漂亮的,因为如果你理解正确的话,Pandas真的很强大。

for step in df.groupby('Accession Number')['Transaction S.No'].max().items(): 
    df.loc[(df['Accession Number'] == step[0]) & (df['Transaction S.No'] == step[1]), 'test'] = 1

它所做的就是遍历groupby中找到的项。这些项是列名和最大值('some Accession',5)的元组。然后条件查找正确的列,并将另一列的值设置为1。

相关问题