gpt4 book ai didi

python - 当列可以具有混合类型时如何在 Pandas 中创建虚拟变量?

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:10 25 4
gpt4 key购买 nike

How to create dummy variables in Pandas (Python 2.7) 已被多次询问,但我还不知道稳健且快速的解决方案。考虑这个数据框:

df=pd.DataFrame({'A':[1,2,-1,np.nan, 'rh']})
df
Out[9]:
A
0 1
1 2
2 -1
3 NaN
4 rh

是的,它有混合类型。大数据集总是发生(我有数百万行)

我需要创建虚拟变量,如果条件为真则为 1,否则为零。我假设如果 Pandas 不能执行逻辑比较(比如比较一个字符串是否大于某个实数),我会得到一个零。看看这个:

df['dummy2']=(df.A > 0).astype(int)

df['dummy1']=np.where(df.A>0,1,0)

df
Out[12]:
A dummy2 dummy1
0 1 1 1
1 2 1 1
2 -1 0 0
3 NaN 0 0
4 rh 1 1

显然这是有问题的。这里发生了什么?我怎样才能防止这些虚假标记?

非常感谢!

最佳答案

两种方法

In [37]: pd.to_numeric(df.A, errors='coerce').notnull() & (df.A > 0)
Out[37]:
0 True
1 True
2 False
3 False
4 False
Name: A, dtype: bool

In [38]: df.A.apply(np.isreal) & (df.A > 0)
Out[38]:
0 True
1 True
2 False
3 False
4 False
Name: A, dtype: bool

第三可能会很慢

In [39]: df.A.str.isnumeric().isnull() & (df.A > 0)
Out[39]:
0 True
1 True
2 False
3 False
4 False
Name: A, dtype: bool

关于python - 当列可以具有混合类型时如何在 Pandas 中创建虚拟变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com