python - Pandas:删除包含整数和字符串的混合类型系列中的所有字符串组件

标签 python pandas series mixed-type

这让我抓狂。当我搜索有关在数据框中删除元素的提示时,没有任何关于混合类型系列的信息。

假设这是一个数据框:

import pandas as pd
df = pd.DataFrame(data={'col1': [1,2,3,4,'apple','apple'], 'col2': [3,4,5,6,7,8]})
a = df['col1']

那么“a”是一个由 6 个组件组成的混合类型系列。如何从 a 中删除所有“苹果”?我需要系列 = 1,2,3,4。

最佳答案

将整数保留为整数类型而不将其更改为 float :

方法:过滤包含要保留的数值的行(而不是将非数值转换为 NaN 然后删除 NaN)。不同之处在于,我们不会得到 NaN 的中间结果,这将强制数值从整数更改为 float 。

a = pd.to_numeric(a[a.astype(str).str.isnumeric()])

结果:

生成的 dtype 仍为整数类型 int64

print(a)

0    1
1    2
2    3
3    4
Name: col1, dtype: int64

如果您生成 NaN 的中间结果,如下所示:

a = pd.to_numeric(a, errors='coerce').dropna()

生成的 dtype 被迫更改为 float 类型(而不是保留为整数)

0    1.0
1    2.0
2    3.0
3    4.0
Name: col1, dtype: float64

关于python - Pandas:删除包含整数和字符串的混合类型系列中的所有字符串组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68277497/

相关文章:

python - key 错误 : 'PATH' when running docker-compose up from Fabric

python - 如何迭代数据框的索引和理解列表中的列?

python - 将 statsmodels 摘要对象转换为 Pandas Dataframe

python - 如何使用 pandas 将 Series 重新排列为 DataFrame

python - 将数据点分组到系列中

python - 如何在 python 3.6.2 中使用 suds.client 库?

python - uwsgi 上的 Flask 应用程序给出 TypeError : 'Flask' object is not iterable

python - Numpy数组元素之间的就地差异

python - Pandas :使用 read_csv 解析不同列中的日期

python - 用整数值索引 pandas 系列