【发布时间】:2019-02-06 03:44:51
【问题描述】:
我正在尝试编写一个用户定义的函数来查看输入列数据类型并对其进行更改。
我的输入数据类型将是 int64、float64、object、datetimens[64]。
如果它是 datetimens[64],那么我将用另一个自定义日期替换空白日期。输出数据类型也将是 datetimens[64]
如果它是 int64、float64 或对象。我用“FILLINGTHENAS”替换空格 - 一个字符串并将所有这些数据类型转换为对象。
def Change_Data_Type_DataFrame (AnyPandasDataFrame):
cr_date = datetime(1800,1,1,1,1,1)
for i in range(1, AnyPandasDataFrame.shape[1]):
Required_Column_Name = (AnyPandasDataFrame.columns[i])
Required_Data_Type = AnyPandasDataFrame[Required_Column_Name].dtype
if Required_Data_Type == 'datetime64[ns]':
DateChecker = True
else:
DateChecker = contains_word(Required_Column_Name, "Date","of Death","Day of Work")
if DateChecker == False :
if Required_Data_Type == 'int64':
print("Yes")
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].fillna("FILLINGTHENAS")
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].astype(str)
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].astype(str).replace('\.0', '', regex=True)
if Required_Data_Type == object:
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].fillna("FILLINGTHENAS")
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].astype(str)
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].astype(str).replace('\.0', '', regex=True)
if Required_Data_Type == 'float64':
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].fillna("FILLINGTHENAS")
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].astype(str)
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].astype(str).replace('\.0', '', regex=True)
else:
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].fillna(cr_date)
AnyPandasDataFrame[Required_Column_Name] = AnyPandasDataFrame[Required_Column_Name].astype('datetime64[ns]')
return (AnyPandasDataFrame)
我有一个包含 100 列的巨大数据框,我的函数失败了,因为我可以在输出数据框中看到 int64。
print - yes 不起作用,但我的 df 肯定有 int64 dtypes。
我哪里错了,我的代码能不能写得更好。
请帮我解决这个问题。
【问题讨论】: