检查数据帧中的列是否为整数,如果是整数,则必须乘以10
import numpy as np
import pandas as pd
df = pd.dataframe(....)
#function to check and multiply if a column is integer
def xtimes(x):
for col in x:
if type(x[col]) == np.int64:
return x[col]*10
else:
return x[col]
#using apply to apply that function on df
df.apply(xtimes).head(10)
我收到的错误('GP','发生在索引学校')
答案 0 :(得分:3)
您可以使用select_dtypes
获取数字列,然后乘以。
In [1284]: df[df.select_dtypes(include=['int', 'int64', np.number]).columns] *= 10
您可以拥有include=[... np.int64, ..., etc]
答案 1 :(得分:2)
您可以使用dtypes
属性和loc
。
df.loc[:, df.dtypes <= np.integer] *= 10
<强>解释强>
pd.DataFrame.dtypes
返回pd.Series
个numpy dtype对象。我们可以使用比较运算符来确定subdtype
状态。有关numpy.dtype
层次结构,请参阅https://www.postgresql.org/docs/9.6/static/pgtrgm.html。
演示
考虑数据框df
df = pd.DataFrame([
[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6]
]).astype(pd.Series([np.int32, np.int16, np.int64, float, object, str]))
df
0 1 2 3 4 5
0 1 2 3 4.0 5 6
1 1 2 3 4.0 5 6
dtypes
df.dtypes
0 int32
1 int16
2 int64
3 float64
4 object
5 object
dtype: object
我们要更改列0
,1
和2
方便地
df.dtypes <= np.integer
0 True
1 True
2 True
3 False
4 False
5 False
dtype: bool
这使我们能够在loc
作业中使用它。
df.loc[:, df.dtypes <= np.integer] *= 10
df
0 1 2 3 4 5
0 10 20 30 4.0 5 6
1 10 20 30 4.0 5 6