Fiz*_*izi 6 python apply dataframe pandas
我想知道是否有办法在对数据框的列使用应用时使用索引值。假设我有 df 像:
col1 col2
0 a [0,1,2]
1 b [0,2]
2 c [0,1,2]
Run Code Online (Sandbox Code Playgroud)
我想在 df.col2 上编写一个应用函数,以便它从 col2 中的列表中删除索引值,留下一个 df 如下:
col1 col2
0 a [1,2]
1 b [0,2]
2 c [0,1]
Run Code Online (Sandbox Code Playgroud)
索引值可能在也可能不在列表中。但如果它确实存在于列表中,则应将其删除。请注意,这不是实际用例,但与我需要的类似。我有
df.col2.apply(lambda x: f(x))
Run Code Online (Sandbox Code Playgroud)
在 f(x) 中,如果可能或解决方法,我希望能够访问 x 的索引值。我知道 df.apply() 可以处理列值,而 df.index.map() 可以处理索引。Pandas 中是否有一种方法可以将两者的用例结合到一个优雅的解决方案中。谢谢您的帮助。
更新:索引是一个整数值,它将以连续整数的方式受到约束。col2 将为每个索引提供一个列表。我想检查索引是否在该列表中,如果存在,则将其从列表中删除。因此,对于行索引 3,我们有列表 [27,36,3,9,7]。我想从列表中删除 3。该列表是无序的
def name_drop(x):
x_ = x.drop('col2')
_x = pd.Series(x.col2)
_x = _x[_x != x.name].tolist()
x = x_.append(pd.Series({'col2': _x}))
return x
df.apply(name_drop, axis=1)
Run Code Online (Sandbox Code Playgroud)