这让我抓狂。当我搜索有关在数据框中删除元素的提示时,没有任何关于混合类型系列的信息。
假设这是一个数据框:
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/