gpt4 book ai didi

python - 当我最初不知道数据类型时,如何快速更改 100 多个数据帧的格式?

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:17 26 4
gpt4 key购买 nike

我正在尝试使用 Pandas 读取大量(>100)数据帧后对其进行格式化。这些不是大型数据集(最大文件大小约为 50 MB),但具有不同数量的列(10-100)和不同的列名称(有些是相同的),可以具有整数、 float 、日期时间或字符串值。最终目标是将它们合并到一个数据框中,但在此之前,我需要正确设置每一列的格式。我希望让这个过程更快。

编辑:列的每个数据类型都作为“对象”返回。我尝试了 df.infer_objects() 但只返回了相同的数据类型。

我当前的格式化函数是

def format_df(df):
'''
Formats the dataframe in the way I want.

Parameters
-----------
df: a pandas.DataFrame - dataframe with unformatted data types

Returns
-----------
df1: a pandas.DataFrame - dataframe with correct data types

'''
start = time.time()
# Copy dataframe to make changes
df1 = df.copy()

# Format the correct data type for each column in the dataframe
for col in df.columns:
try:
# Tries to convert column to datetime format
df1[col] = df[col].map(pd.to_datetime)
# If entire column is null, then convert to NaN instead of NaT
if len(df1[df1[col].isnull() == True]) == len(df1[col]):
df1[col] = df1[col].astype(object).where(df1[col].notnull(),
np.nan)
df1[col] = df1[col].astype(float)
except:
# If it can't convert to datetime, try converting to a numeric
# format (int or float)
try:
df1[col] = df[col].map(pd.to_numeric)
except:
# If data is not datetime or numeric (i.e. string of
# characters), leave as is
df1[col] = df[col]
end = time.time()
print('Time to format dataframe: ', (end-start)/60)
return df1

在数据集上运行该函数需要 30 秒到 2 分钟,但由于我有 100 多个数据帧,整个过程大约需要 30 分钟。我怎样才能让它更快?

我还在研究一种在读入文件之前获取列数据类型的方法,但我不确定这会更快。

最佳答案

关于python - 当我最初不知道数据类型时,如何快速更改 100 多个数据帧的格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54149018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com