我想知道是否有一种方法可以在对数据框的列使用应用时使用索引值。假设我有这样的 df:
col1 col2
0 a [0,1,2]
1 b [0,2]
2 c [0,1,2]
我想在 df.col2 上编写一个应用函数,以便它从 col2 中的列表中删除索引值,留下一个 df,如:
col1 col2
0 a [1,2]
1 b [0,2]
2 c [0,1]
索引值可能在也可能不在列表中。但如果它确实存在于列表中,则应将其删除。 请注意,这不是实际用例,但与我需要的类似。我有
df.col2.apply(lambda x: f(x))
并且在 f(x) 中,如果可能或解决方法,我希望能够访问 x 的索引值。 我知道 df.apply() 可以处理列值,而 df.index.map() 可以处理索引。 Pandas 中是否有一种方法可以将两者的用例结合在一个优雅的解决方案中。感谢您的帮助。
更新:索引是一个整数值,它将以其连续整数的方式受到约束。 col2 将有每个索引的列表。我想检查索引是否在该列表中,如果存在则将其从列表中删除。所以假设对于行索引 3,我们有列表 [27,36,3,9,7]。我想从列表中删除 3。列表是无序的
最佳答案
如果我正确理解你的问题,这应该可以完成工作:
df.apply(lambda x: x.name in x.col2 and x.col2.remove(x.name), axis=1)
以原帖为例:
In [226]: df
Out[226]:
col1 col2
0 a [0, 1, 2]
1 b [0, 2]
2 c [0, 1, 2]
In [227]: df.apply(lambda x: x.name in x.col2 and x.col2.remove(x.name), axis=1);
In [228]: df
Out[228]:
col1 col2
0 a [1, 2]
1 b [0, 2]
2 c [0, 1]
关于python - Pandas:在列的应用函数中使用索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39151978/