我有一个Pandas,包含2列,都有连续整数。在逐行的基础上,通过将col_1中的所有相等值分组,我试图在col_2中创建所有值的列表,不包括所讨论的行,并将其存储在一个新列(col_3)中。以下是完整的例子:
当前数据:
col_1 col_2
24 30
24 22
24 34
40 50 所需数据:
col_1 col_2 col_3
24 30 [22,34]
24 22 [30,34]
24 34 [30,22]
40 50 []我尝试过groupby,但这包括了“当前”行及其值,我需要将其排除在外。
MWE:
import numpy as np
import pandas as pd
df = pd.DataFrame({'col_1' : [24,24,24,40], 'col_2' : [30,22,34,50}, index=range(4))发布于 2022-10-30 20:10:55
我认为最简单的方法是从第3列中移除当前的行值。根据您如何做到这一点,您可以在创建第3列时这样做,或者可以应用一个函数来删除与当前行值匹配的第一个值(即,如果有多个行值,请注意不要删除当前值的所有实例)。如果你需要更多的帮助,我可以跟进,但我认为你已经得到了,因为你已经差不多有了。
编辑:
从df开始,列3
def remove_col2_val(行):if row3: row3.emove(Row2)返回行
df = df.apply(remove_col2_val,axis=1)
如果有可能row2值不在列表中(这里不应该是这样的,而是为了将来的引用),那么您需要将row3.emove(Row2)包装在一个try/ not块中。
https://stackoverflow.com/questions/74255972
复制相似问题