我尝试迭代我的 df.dtypes ,当 dtypes == 'float' 时我想将其更改为 int 。
df = pd.DataFrame({'TotalRevenue':[300,9000,1000,750,500,2000,0,600,50,500],
'Date':['2016-12-02' for i in range(10)],
'SaleCount':[10,100,30,35,20,100,0,30,2,20],
'shops':['S3','S2','S1','S5','S4','S8','S6','S7','S9','S10']})
def myFunc(df):
for el in range(0, len(df.dtypes)):
if df.dtypes[el] == 'float64':
df = df.astype({df.columns[el] : 'int64'})
return df.dtypes
myFunc(df)
一切都工作正常,代码返回正确的数据类型
TotalRevenue int64
Date object
SaleCount int64
shops object
dtype: object
但是当我在笔记中写下 df.dtypes 时,没有任何变化
TotalRevenue float64
Date object
SaleCount int64
shops object
dtype: object
首先,您提供的数据中没有浮点值(因此没有列浮点数据类型)。但是假设有
TotalRevenue
那么你不能使用你的方法设置为 int64 dtype(你不是 using 从函数返回的值,如果你确实使用它来设置 dtypes 那么它会导致错误)。您需要做的是选择具有“错误”数据类型的列并更改这些:
使用面膜:
m = df.select_dtypes('float64').columns
df[m] = df[m].astype('int64')
或者如果你想使用循环:
for column in df.columns:
if df[column].dtype == 'float64':
df[column] = df[column].astype('int64')