如何在 Pandas DataFrame 上编写条件数组操作
Posted
技术标签:
【中文标题】如何在 Pandas DataFrame 上编写条件数组操作【英文标题】:How to write a conditional array operation on a Pandas DataFrame 【发布时间】:2015-09-18 23:53:07 【问题描述】:假设我有一个 DataFrame,其中一列(我们将其称为“power”)保存从 1 到 10000 的整数值。我想生成一个 numpy 数组,该数组对于每一行都有一个值表示DataFrame对应行的'power'列是否有大于9000的值。
我可以这样做:
def categorize(frame):
return np.array(frame['power']>9000)
这会给我一个布尔数组,可以用 True 和 False 进行测试。但是,假设我希望数组的内容为 1 和 -1,而不是 True 和 False。如何在不必遍历框架中的每一行的情况下完成此操作?
作为背景,该应用程序正在使用 scikit-learn 通过机器学习为二进制分类准备数据。
【问题讨论】:
***.com/questions/19913659/… 【参考方案1】:您可以将np.where
用于此类内容。
考虑以下几点:
import pandas as pd
df = pd.DataFrame(
'a': range(20))
df['even'] = df.a % 2 == 0
所以现在even
是一个布尔列。要以您喜欢的方式创建数组,您可以使用
np.where(df.even, 1, -1)
如果愿意,您可以将其分配回 DataFrame:
df['foo'] = np.where(df.even, 1, -1)
请参阅pandas
cookbook 进一步了解此类内容。
【讨论】:
以上是关于如何在 Pandas DataFrame 上编写条件数组操作的主要内容,如果未能解决你的问题,请参考以下文章
Pandas:如何将 cProfile 输出存储在 pandas DataFrame 中?
如何在 jupyter 中像 pandas Dataframe 一样打印 Pyspark Dataframe