python - Pandas:在列的应用函数中使用索引值

标签 python pandas dataframe apply

我想知道是否有一种方法可以在对数据框的列使用应用时使用索引值。假设我有这样的 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/

相关文章:

R - 通过循环遍历向量中的元素将列添加到列表中的数据帧

python - 结构中的奇怪格式长度

python - 如何在 3D 图上绘制直方图?

python - 使用重音编辑距离

python - Pandas:按平均值对列进行排序

python - 有效计算邻接矩阵

python - 将txt格式的url下载到pandas dataframe

Python:删除数据框中除 > < 之间的信息之外的所有字符串

python - pythonpath 应该有特定于 python2 和 python3 的目录吗?

python - 如果 pandas DataFrame 中另一列不为空,则将一列替换为另一列