用列python中的新整数替换所有非整数
Posted
技术标签:
【中文标题】用列python中的新整数替换所有非整数【英文标题】:Replacing all the non-integers with a new integer in a column python 【发布时间】:2022-01-23 01:51:00 【问题描述】:所以我有一个名为所有者的列,看起来像这样
'Owned by Terrick Inc.',
nan,
'Owned by MHPI Inc.',
'Owned by Zeman Homes & Neighborhoods',
'Owned by Santefort Neighborhood Properties',
'Owned by MHPI Inc.',
'Owned by MHPI Inc.',
nan,
2,
nan,
5,
'Owned by RHP Properties',
'Owned by Zeman Homes & Neighborhoods',
'Owned by Zeman Homes & Neighborhoods',
'Owned by Gateway Manufactured Home Community',
3,
nan,
'Owned by Zeman Homes & Neighborhoods',
'Owned by MHPI Inc.',
nan,
'Owned by Indian Trails LLC',
'Owned by Zeman Homes & Neighborhoods',
1,
'Owned by Lake View Manufactured Home Community',
5,
2,
'Owned by Zeman Homes & Neighborhoods'
我正在尝试将所有不是数字的值更改为数字 10。但由于某种原因它无法正常工作。我尝试了 2 种方法,这是第一种,但这只是将整个列替换为 9,因此它不符合我的条件。
df['Owner'][(df['Owner'] != 0) | (df['Owner'] != '1') | (df['Owner'] != '2') | (df['Owner'] != 3) | (df['Owner'] != 4) | (df['Owner'] != 5) | (df['Owner'] != 6)] = 9
我使用的第二种方法是带有 if 语句的循环。但这对列表没有任何作用
for i in df['Owner']:
if i == 1:
pass
elif i == 2:
pass
elif i == 3:
pass
elif i == 4:
pass
elif i == 5:
pass
elif i == 6:
pass
elif i == 0:
pass
else:
i = 9
提前致谢
【问题讨论】:
【参考方案1】:df['Owner'] = [10 if type(x) is not int else x for x in df['Owner']]
应该这样做。它读起来像 Python 中经常出现的简单英语。
【讨论】:
hi Gwang,所以我使用替换来获取 1、2、3、4、5、6。所以我相信dtype仍然是一样的。当我尝试您的代码时,它也将所有内容都更改为 10。我想一个更好的解释我想要做的事情的方法是将所有剩余的东西放在一起进行双变量分析 @doskitele 只是表示列中数字的类型不是np.dtype(int)
。但也许他们只是int
?您是否尝试过使用 in
的第二个建议版本?
@doskitele 现在我改成了int
,因为它只是int
。【参考方案2】:
你可以map
type
函数,和int
比较,然后用where
保留整数,其余的用10代替:
df['Owner'] = df['Owner'].where(df['Owner'].map(type).eq(int), 10)
输出:
Owner
0 10
1 10
2 2
3 10
4 5
5 10
使用过的输入:
from numpy import nan
df = pd.DataFrame('Owner': ['Owned by MHPI Inc.', nan, 2, nan, 5, 'Owned by RHP Properties',])
【讨论】:
应该是.neq(int)
还是?
这很有效,非常感谢
@Gwang-JinKim 不,为什么?实际上你可以使用ne
和mask
@mozway - 我认为否定是失踪的。但您的代码确实可以完美运行。啊我被np.where()
弄糊涂了。
@mozway 因为在np.where(<condition>, x)
x
意味着用x替换条件为真的地方。但也许这不是真的......以上是关于用列python中的新整数替换所有非整数的主要内容,如果未能解决你的问题,请参考以下文章