【问题标题】:How to use list comprehensions for dataframe with two or more variables in python?python - 如何在python中对具有两个或多个变量的数据框使用列表推导?
【发布时间】:2021-08-06 01:22:16
【问题描述】:

我有来自 excel 的数据框 df

这是否可能:

df["A"] = [foo(b, c) for (b, c) in (df["B"], df["C"])]

需要从数据框的不同列传递函数中的变量

谢谢

【问题讨论】:

标签: python pandas list dataframe list-comprehension


【解决方案1】:

您可以在axis=1(用于列索引)上使用df.apply() 来获取每行对应的df["B"]df["C"]) 的值,以便传递给foo,如下所示:

df['A'] = df.apply(lambda x: foo(x['B'], x['C']), axis=1)

这是完成任务的更惯用的 Pandas 方式。我们通常更喜欢使用 Pandas 函数而不是列表推导,因为 Pandas 函数可以更好地处理 NaN 值,而列表推导在处理 NaN 值时经常会出错。

【讨论】:

  • 谢谢,兄弟,难以置信的可行),ps:只需编辑 lambda x:
  • @КонстантинПрудников 哦,现在更正了错字,谢谢!
  • @SeaBean--“我们通常更喜欢使用 df.apply() 而不是使用列表推导”--当您认为 apply 是较慢的方法之一时,不确定这是否正确How to iterate over rows in a DataFrame in Pandas 演示的列表理解和压缩
  • 哦,我回答这个问题的时候可能是太困了,所以我有很多错别字。正如您在我的论点中看到的那样,Pandas 函数可以更好地处理 NaN 值。我们经常看到人们发布有关 TypeError: 'float' object is not subscriptable 的问题,这实际上是由于在处理具有 NaN 值的数据框时未正确处理 NaN 值引起的。
  • 对于 OP 的问题,它本质上是想要实现与 How to apply a function to two columns of Pandas dataframe 相同的目标,但以使用列表理解的方式询问,试图以不正确的方式访问 2 列的行值.为了提供快速指南,我没有详细介绍比较系统性能的各种方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2022-01-20
  • 2019-11-02
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多