熊猫遍历行以查看值是不是为字母数字[重复]

Posted

技术标签:

【中文标题】熊猫遍历行以查看值是不是为字母数字[重复]【英文标题】:pandas iterate throw rows to see if value is alpha numeric [duplicate]熊猫遍历行以查看值是否为字母数字[重复] 【发布时间】:2019-02-16 03:26:59 【问题描述】:

所以我有一个 df,其中有一列具有各种字符串值

col1

Hi
-Hi
+hi
=Hi

我想将此列中的所有非字母数字值删除为:

col1

Hi
Hi
hi
Hi

我知道我可以用那些非字母字符替换 str,但为了将来证明脚本,我想使用类似 isalpha() 的东西。将来可能会有不同的非字母字符。

【问题讨论】:

【参考方案1】:

你也可以使用正则表达式:

df['col1'].str.findall(r'[a-zA-Z0-9]+').apply(lambda x: ''.join(x))

输出:

0  Hi
1  Hi
2  hi
3  Hi

【讨论】:

这会删除非字母字符,即使它不在前面。所以像 Hi-hello 这样的东西来 Hi @skimchi1993 你是对的。更新。现在好了。【参考方案2】:

您可以使用列表推导:

df['col1'] = [''.join([i for i in x if i.isalpha()]) for x in df['col1']]

print(df)

  col1
0   Hi
1   Hi
2   hi
3   Hi

如果您有 NaNfloat 值,请将它们首先通过将它们转换为空字符串来删除:

df.loc[pd.to_numeric(df['col1'], errors='coerce').notnull(), 'col1'] = ''

【讨论】:

我得到一个 TypeError: 'float' object is not iterable 错误。 @skimchi1993,查看更新。 所以如果我有 HI-Hello。它会去 Hihello 而不仅仅是 Hi-Hello。我只想在第一个字符是字母数字时删除它,例如 -Hi = Hi @skimchi1993,但这不是你的问题。请不要改变你的问题。我已经把它回滚了。如果您有新的、不同的问题,请单独提出。 知道了!那是我的错。这确实有效,所以我会这样标记它。

以上是关于熊猫遍历行以查看值是不是为字母数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫中将字符串日期转换为数字[重复]

将熊猫数据框列列表值拆分为重复行[重复]

从箭头格式到熊猫数据框的转换是不是会在堆上重复数据?

在javascript中获取NaN而不是数字[重复]

循环遍历熊猫中的行[重复]

删除熊猫数据框中具有特定值的行[重复]