2 回答

TA貢獻1842條經驗 獲得超22個贊
如果ALL你不知道如何實現,你可以試試這個:
def combine_all_data(data_files, columns_needed=None):
kwargs= dict()
if columns_needed is not None:
if 'category' not in columns_needed:
columns_needed= ['category'] + columns_needed
kwargs['usecols']= columns_needed
dataframes = [pd.read_csv(data_file, **kwargs) for data_file in data_files]
return pd.concat(dataframes, sort=False)
這樣做的好處是,您需要更少的內存,因為您不想看到的列在閱讀過程中已經被跳過了。另外,您返回一個完整的數據框而不是一個切片。因此,您可以不受限制地使用它。

TA貢獻1796條經驗 獲得超7個贊
read_csv有一個usecols論點:
def combine_all_data(data_files, columns_needed='ALL'):
if needed_columns != 'ALL':
if not 'category' in columns_needed:
columns_needed.append('category')
return pd.concat([pd.read_csv(x, usecols=columns_needed) for x
in data_files], sort=False)
else:
return pd.concat([pd.read_csv(x) for x in data_files], sort=False)
添加回答
舉報