假设我们有
>>> df.dtype
Name object
Height object
Weight object
Age object
Job object
是否有任何简单的方法可以使用.to_numeric()方法隐藏除Name和Job列之外的所有列?
我已经尝试但是它不起作用
df.iloc[df.columns != Name & df.columns != Job] = pd.to_numeric(df.iloc[df.columns != Name & df.columns != Job], errors='coerce')
答案 0 :(得分:3)
我想到的最简单的方法是列出除Name和Job之外的所有列,然后对它们进行迭代{<1}}:
pandas.to_numeric
编辑:
如果你绝对想要使用数字而不是列名,并且已经知道它们是哪个indice:
cols=[i for i in df.columns if i not in ["Name","Job"]]
for col in cols:
df[col]=pd.to_numeric(df[col])
虽然这比必要的要复杂得多。
答案 1 :(得分:0)
假设你有DF:
df
Out[125]:
Name Height Weight Age Job
0 0 2 3 4 5
df.dtypes
Out[126]:
Name object
Height object
Weight object
Age object
Job object
dtype: object
如果必须使用pd.to_numeric转换这些列,可以这样做:
df2 = pd.concat([pd.DataFrame([pd.to_numeric(df[e],errors='coerce') \
for e in df.columns if e not in ['Name','Job']]).T,\
df[['Name','Job']]],axis=1)
df2
Out[138]:
Height Weight Age Name Job
0 2 3 4 0 5
df2.dtypes
Out[139]:
Height int64
Weight int64
Age int64
Name object
Job object
dtype: object