import pandas as pd
import numpy as np
test_df = pd.DataFrame([[1,2]]*4, columns=['x','y'])
test_df.iloc[0,0] = '1'
test_df.iloc[0,0] = 1
test_df.select_dtypes(include=['number'])
我想知道为什么本例中不包含 x 列
最佳答案
我可以在 Pandas v0.19.2 上重现。问题是 Pandas 何时(如果有的话)选择检查并重铸系列。您首先使用以下赋值将系列定义为 dtype object
:
test_df.iloc[0, 0] = '1'
Pandas 将任何带有字符串的系列存储为 object
dtype。然后,您可以覆盖下一行中的值,而无需显式更改该系列的数据类型:
test_df.iloc[0, 0] = 1
但是您不应该不假设这会自动触发整个系列转换为数字数据类型。据我所知,这不是有记录的行为。虽然它可能适用于较新的版本,但这不是您应该为生产工作流程假定的行为。
关于python - 为什么 select_dtypes 在这种情况下在 pandas 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52943458/