{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "ename": "IndexError", "evalue": "positional indexers are out-of-bounds", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[1], line 246\u001b[0m\n\u001b[1;32m 240\u001b[0m concatenated_df\u001b[39m=\u001b[39mpd\u001b[39m.\u001b[39mread_csv(folder_path)\n\u001b[1;32m 245\u001b[0m \u001b[39mif\u001b[39;00m concatenated_df \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m--> 246\u001b[0m df_cleaned,cellvolt_name,celltemp_name\u001b[39m=\u001b[39mdatacleaning(concatenated_df)\n\u001b[1;32m 247\u001b[0m data_temp, df_chrg_splited, chrgr_splice_num, state_splice_num\u001b[39m=\u001b[39msplit_data(df_cleaned)\n\u001b[1;32m 248\u001b[0m df_chrg_splited\u001b[39m.\u001b[39mto_feather(out_put_folder_path)\n", "Cell \u001b[0;32mIn[1], line 183\u001b[0m, in \u001b[0;36mdatacleaning\u001b[0;34m(df)\u001b[0m\n\u001b[1;32m 181\u001b[0m cellvolt_name\u001b[39m=\u001b[39m[\u001b[39m'\u001b[39m\u001b[39mcellvoltage\u001b[39m\u001b[39m'\u001b[39m\u001b[39m+\u001b[39m\u001b[39mstr\u001b[39m(x) \u001b[39mfor\u001b[39;00m x \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(\u001b[39m1\u001b[39m, CellVoltNums\u001b[39m+\u001b[39m\u001b[39m1\u001b[39m)]\n\u001b[1;32m 182\u001b[0m celltemp_name\u001b[39m=\u001b[39m[\u001b[39m'\u001b[39m\u001b[39mcelltemp\u001b[39m\u001b[39m'\u001b[39m\u001b[39m+\u001b[39m\u001b[39mstr\u001b[39m(x) \u001b[39mfor\u001b[39;00m x \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(\u001b[39m1\u001b[39m, CellTempNums\u001b[39m+\u001b[39m\u001b[39m1\u001b[39m)]\n\u001b[0;32m--> 183\u001b[0m df_volt\u001b[39m=\u001b[39mpd\u001b[39m.\u001b[39;49mDataFrame([x[\u001b[39m0\u001b[39;49m]\u001b[39m.\u001b[39;49msplit(\u001b[39m\"\u001b[39;49m\u001b[39m,\u001b[39;49m\u001b[39m\"\u001b[39;49m) \u001b[39mfor\u001b[39;49;00m x \u001b[39min\u001b[39;49;00m np\u001b[39m.\u001b[39;49marray(df[[\u001b[39m'\u001b[39;49m\u001b[39mcellvoltage\u001b[39;49m\u001b[39m'\u001b[39;49m]])])\u001b[39m.\u001b[39;49miloc[:,\u001b[39mlist\u001b[39;49m(\u001b[39mrange\u001b[39;49m(CellVoltNums))]\n\u001b[1;32m 184\u001b[0m df_volt\u001b[39m.\u001b[39mcolumns \u001b[39m=\u001b[39m cellvolt_name\n\u001b[1;32m 185\u001b[0m df_volt\u001b[39m=\u001b[39mdf_volt\u001b[39m.\u001b[39mastype(\u001b[39m'\u001b[39m\u001b[39mfloat\u001b[39m\u001b[39m'\u001b[39m)\n", "File \u001b[0;32m/opt/module/anaconda2022-10/envs/py3916/lib/python3.9/site-packages/pandas/core/indexing.py:925\u001b[0m, in \u001b[0;36m_LocationIndexer.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 923\u001b[0m \u001b[39mwith\u001b[39;00m suppress(\u001b[39mKeyError\u001b[39;00m, \u001b[39mIndexError\u001b[39;00m):\n\u001b[1;32m 924\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mobj\u001b[39m.\u001b[39m_get_value(\u001b[39m*\u001b[39mkey, takeable\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_takeable)\n\u001b[0;32m--> 925\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_getitem_tuple(key)\n\u001b[1;32m 926\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 927\u001b[0m \u001b[39m# we by definition only have the 0th axis\u001b[39;00m\n\u001b[1;32m 928\u001b[0m axis \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39maxis \u001b[39mor\u001b[39;00m \u001b[39m0\u001b[39m\n", "File \u001b[0;32m/opt/module/anaconda2022-10/envs/py3916/lib/python3.9/site-packages/pandas/core/indexing.py:1506\u001b[0m, in \u001b[0;36m_iLocIndexer._getitem_tuple\u001b[0;34m(self, tup)\u001b[0m\n\u001b[1;32m 1504\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_getitem_tuple\u001b[39m(\u001b[39mself\u001b[39m, tup: \u001b[39mtuple\u001b[39m):\n\u001b[0;32m-> 1506\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_has_valid_tuple(tup)\n\u001b[1;32m 1507\u001b[0m \u001b[39mwith\u001b[39;00m suppress(IndexingError):\n\u001b[1;32m 1508\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_getitem_lowerdim(tup)\n", "File \u001b[0;32m/opt/module/anaconda2022-10/envs/py3916/lib/python3.9/site-packages/pandas/core/indexing.py:754\u001b[0m, in \u001b[0;36m_LocationIndexer._has_valid_tuple\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 752\u001b[0m \u001b[39mfor\u001b[39;00m i, k \u001b[39min\u001b[39;00m \u001b[39menumerate\u001b[39m(key):\n\u001b[1;32m 753\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 754\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_validate_key(k, i)\n\u001b[1;32m 755\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mValueError\u001b[39;00m \u001b[39mas\u001b[39;00m err:\n\u001b[1;32m 756\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[1;32m 757\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mLocation based indexing can only have \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 758\u001b[0m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m[\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_valid_types\u001b[39m}\u001b[39;00m\u001b[39m] types\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 759\u001b[0m ) \u001b[39mfrom\u001b[39;00m \u001b[39merr\u001b[39;00m\n", "File \u001b[0;32m/opt/module/anaconda2022-10/envs/py3916/lib/python3.9/site-packages/pandas/core/indexing.py:1424\u001b[0m, in \u001b[0;36m_iLocIndexer._validate_key\u001b[0;34m(self, key, axis)\u001b[0m\n\u001b[1;32m 1422\u001b[0m \u001b[39m# check that the key does not exceed the maximum size of the index\u001b[39;00m\n\u001b[1;32m 1423\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(arr) \u001b[39mand\u001b[39;00m (arr\u001b[39m.\u001b[39mmax() \u001b[39m>\u001b[39m\u001b[39m=\u001b[39m len_axis \u001b[39mor\u001b[39;00m arr\u001b[39m.\u001b[39mmin() \u001b[39m<\u001b[39m \u001b[39m-\u001b[39mlen_axis):\n\u001b[0;32m-> 1424\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mIndexError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39mpositional indexers are out-of-bounds\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 1425\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 1426\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mCan only index by location with a [\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_valid_types\u001b[39m}\u001b[39;00m\u001b[39m]\u001b[39m\u001b[39m\"\u001b[39m)\n", "\u001b[0;31mIndexError\u001b[0m: positional indexers are out-of-bounds" ] } ], "source": [ "import os\n", "import pandas as pd\n", "import numpy as np\n", "\n", "\n", "\n", "\n", "\n", "def clean_dead_value(series, num_dead_thresh):\n", " slide_list = [series.index[0]]\n", " slide_list_all = []\n", " for i in range(series.index[0],series.index[-1]):\n", " j = i + 1\n", " diff = series[j] - series[i]\n", " if diff == 0:\n", " slide_list.append(j)\n", " else:\n", " slide_list.clear()\n", " slide_list.append(j)\n", " if len(slide_list) >= num_dead_thresh:\n", " target_list = slide_list.copy()\n", " slide_list_all.append(target_list)\n", " index= [] # 将找到的满足条件的index合并\n", " for i in range(len(slide_list_all) - 1):\n", " if set(slide_list_all[i]) < set(slide_list_all[i + 1]):\n", " index.append(i)\n", " m = {i: element for i, element in enumerate(slide_list_all)}\n", " [m.pop(i) for i in index]\n", " return list(m.values())\n", "\n", "def crnt_insert(df_data_temp):\n", " df_data_temp['time'] = pd.to_datetime(df_data_temp['time'])\n", " df_data_temp.sort_values(by = ['time'], inplace = True)\n", " interval = pd.Timedelta(minutes = 5)\n", " threshold = pd.Timedelta(minutes = 20)\n", "\n", " inserted_data = pd.DataFrame(columns=df_data_temp.columns)\n", "\n", " for i in range(1, len(df_data_temp)):\n", " current_time = df_data_temp.iloc[i]['time']\n", " prev_time = df_data_temp.iloc[i-1]['time']\n", " time_diff = current_time - prev_time\n", " \n", " if time_diff >= threshold:\n", " num_intervals = int(time_diff / interval) - 1\n", " new_times = pd.date_range(start=prev_time + interval, end=current_time - interval, freq=interval)\n", " new_rows = pd.DataFrame({col: np.nan for col in df_data_temp.columns}, index=range(len(new_times)))\n", " new_rows['time'] = new_times\n", " inserted_data = inserted_data.append(new_rows)\n", "\n", " df_data_temp = pd.concat([df_data_temp, inserted_data], ignore_index=True).sort_values('time')\n", " # df_data_temp['PackCrnt'] = df_data_temp['PackCrnt'].interpolate()\n", " df_data_temp['packcrnt'].fillna(0.2, inplace = True)\n", " df_data_temp.drop_duplicates(subset=['time'], keep = 'first', inplace = True)\n", " df_data_temp.sort_values(by = ['time'], inplace = True)\n", " df_data_temp.reset_index(drop = True, inplace = True)\n", " return df_data_temp\n", "def split_data(df_data2):\n", " df_data_ori = df_data2.copy()\n", " df_data_ori.reset_index(drop = True, inplace = True)\n", " df_data = crnt_insert(df_data_ori)\n", " df_data['crnt_flg'] = 0\n", " df_data.loc[df_data['packcrnt'] > 0.05*102, 'crnt_flg'] = 1\n", " df_data.loc[df_data['packcrnt'] < -0.05*102, 'crnt_flg'] = -1\n", " df_data['sts_flg'] = 2\n", " df_sts_chrg = pd.DataFrame(columns=list(df_data.columns))\n", " df_crnt_flg = df_data['crnt_flg']\n", " num_dead_thresh = 15\n", " indexs_to_delelte = clean_dead_value(df_crnt_flg, num_dead_thresh)#获得连续数据所在的行\n", " rest_num = len(indexs_to_delelte)\n", " if rest_num > 0:#仅有一个连续数据时\n", " for splice_item in range(0, rest_num):#rest_num\n", " df_data_temp = df_data.iloc[indexs_to_delelte[splice_item][0]:(indexs_to_delelte[splice_item][-1]+1)]#获得电流连续数据\n", " df_data_temp.reset_index(drop = True, inplace = True)\n", " # cal_ah_temp = cal_ah(df_data_temp)\n", " delta_soc = df_data_temp['packsoc'].iloc[-1] - df_data_temp['packsoc'].iloc[0]\n", " df_time_temp = pd.to_datetime(df_data_temp['time'])\n", " delta_time = (df_time_temp.iloc[-1] - df_time_temp.iloc[0])/pd.Timedelta(1, 'hours')\n", " if all(df_data_temp['crnt_flg'] == 0):#静置判断\n", " if delta_time > 0.17:\n", " df_data_temp['sts_flg'] = 0\n", " df_sts_chrg = df_sts_chrg.append(df_data_temp)\n", " df_sts_chrg.reset_index(drop = True, inplace = True)\n", " elif all(df_data_temp['crnt_flg'] == -1) and (delta_soc > 2):#充电判断0.1*self.capty\n", " df_data_temp['sts_flg'] = 1\n", " \n", " df_time_temp = pd.to_datetime(df_data_temp['time'])\n", " df_soc_temp = df_data_temp['packsoc']\n", " delta_soc = round((df_soc_temp.iloc[-1] - df_soc_temp.iloc[0]), 3)\n", " delta_time = (df_time_temp.iloc[-1] - df_time_temp.iloc[0])/pd.Timedelta(1, 'hours')\n", " if delta_time >= 0.03:\n", " rate = round(delta_soc/(100*delta_time), 3)\n", " else:\n", " rate = 0\n", " if abs(rate) > 0.3:\n", " status = 'offboard_charge'\n", " else:\n", " status = 'onboard_charge'\n", " if df_soc_temp.iloc[-1] >= 99:\n", " ful_chrg_flg = 1\n", " else:\n", " ful_chrg_flg = 0 \n", " df_data_temp['charge_method']= status\n", " df_data_temp['full_charge_flg']= ful_chrg_flg\n", "\n", " \n", " df_sts_chrg = df_sts_chrg.append(df_data_temp)\n", " df_sts_chrg.reset_index(drop = True, inplace = True)\n", " # elif all(df_data_temp['crnt_flg'] == 1) and (cal_ah_temp > 0.1*self.capty):#充电判断\n", " # df_data_temp['sts_flg'] = 1\n", " # df_sts_chrg = df_sts_chrg.append(df_data_temp)\n", " # df_sts_chrg.reset_index(drop = True, inplace = True)\n", " df_dschrg = pd.concat([df_data, df_sts_chrg, df_sts_chrg]).drop_duplicates(subset = ['time', 'packsoc'], keep = False)\n", " data_temp = pd.concat([df_dschrg, df_sts_chrg])\n", " data_temp.sort_values(by = 'time', inplace = True)\n", " data_temp.reset_index(drop = True, inplace = True)\n", " mask = (data_temp['sts_flg'] == 2) & (data_temp['sts_flg'].shift(13) == 0) & (data_temp['sts_flg'].shift(-13) == 0)\n", " data_temp.loc[mask, 'sts_flg'] = 0#静置中的单点行车修改为静置\n", " df_chrg_temp = pd.DataFrame()\n", " chrgr_splice_num = []\n", " if len(df_sts_chrg) > 30:\n", " #---------------------------------充电过程判断--------------------------------------\n", " df_chrg_temp = data_temp.loc[(data_temp['sts_flg'] == 1)]#获取电池充电段\n", " if not df_chrg_temp.empty:\n", " df_chrg_temp.reset_index(inplace = True, drop = True)\n", " chrgr_time = pd.to_datetime(df_chrg_temp['time'])\n", " delta_time = (np.diff(chrgr_time)/pd.Timedelta(1, 'min'))#\n", " pos = np.where(delta_time > 30)\n", " splice_num = []\n", " if len(pos[0]) >= 1:\n", " pos_ful_tem = np.insert(pos, 0, 0)\n", " pos_len = len(pos_ful_tem)\n", " data_len = len(chrgr_time)\n", " pos_ful = np.insert(pos_ful_tem, pos_len, data_len-1)\n", " for item in range(0,len(pos_ful)-1):\n", " splice_num.extend(item*np.ones(pos_ful[item +1]-pos_ful[item]))\n", " splice_num = np.insert(splice_num, 0, 0)\n", " else:\n", " splice_num = np.zeros(len(chrgr_time))\n", " pos_ful = np.array([0])\n", " if len(splice_num) > 0:\n", " df_chrg_temp['chrgr_rest'] = splice_num\n", " chrgr_splice_num = np.unique(df_chrg_temp['chrgr_rest'])#判断有几段充电数据\n", " if not data_temp.empty:\n", " stat_delta_flg = np.diff(data_temp['sts_flg'])#计算时间差的分钟数\n", " delta_time = np.diff(pd.to_datetime(data_temp['time']))/pd.Timedelta(1, 'min')\n", " stat_pos = np.where((stat_delta_flg != 0) | (delta_time > 40))#充电数据分段,大于10min时,认为是两个充电过程\n", " sts_splice_num = []\n", " if len(stat_pos[0]) >= 1:\n", " pos_ful_tem = np.insert(stat_pos, 0, 0)\n", " pos_len = len(pos_ful_tem)\n", " data_len = len(data_temp)\n", " pos_ful = np.insert(pos_ful_tem, pos_len, data_len-1)\n", " for item in range(0,len(pos_ful)-1):\n", " sts_splice_num.extend(item*np.ones(pos_ful[item +1]-pos_ful[item]))\n", " sts_splice_num = np.insert(sts_splice_num, 0, 0)\n", " else:\n", " sts_splice_num = np.zeros(len(data_temp))\n", " pos_ful = np.array([0])\n", " if len(sts_splice_num) > 0:\n", " data_temp['state_bms'] = sts_splice_num\n", " state_splice_num = np.unique(data_temp['state_bms'])#判断有几段充电数据\n", " return data_temp, df_chrg_temp, chrgr_splice_num, state_splice_num\n", "\n", "def datacleaning(df):\n", " if not df.empty:\n", " # df['Time'] = pd.to_datetime(list(df['Time']), utc=True, unit='ms').tz_convert('Asia/Shanghai')\n", " df=df.replace('', np.nan)\n", " df.dropna(axis=0,subset = [ \"time\", \"cellvoltage\", \"celltemp\", \"packcrnt\"], inplace=True)\n", " df['time'] = pd.to_datetime(df['time'], unit='s') #+ pd.Timedelta(hours=8)\n", " df.drop(df.index[(df['packvoltage'] > 1000) | abs(df['packcrnt'] > 999) | (df['packsoc'] > 100) ], inplace=True)\n", " df.drop(df.index[(df['packvoltage'] < 0.001) & (abs(df['packcrnt']) < 0.001) ], inplace=True)\n", " if not df.empty:\n", " df.sort_values(by=\"time\", inplace=True)\n", " df.drop_duplicates(subset=\"time\", inplace=True)\n", " df.reset_index(drop=True, inplace=True)\n", " #num_lst = df.loc[:,'CellVoltTotalCount'].value_counts() #统计电芯数量这一列每个元素出现的个数\n", " CellVoltNums = 96 #num_lst.idxmax() # 找出电芯数量出现最多的次数\n", " #num_lst = df.loc[:,'CellTempTotalCount'].value_counts() #统计电芯数量这一列每个元素出现的个数\n", " CellTempNums = 16#num_lst.idxmax() # 找出电芯数量出现最多的次数\n", " cellvolt_name=['cellvoltage'+str(x) for x in range(1, CellVoltNums+1)]\n", " celltemp_name=['celltemp'+str(x) for x in range(1, CellTempNums+1)]\n", " df_volt=pd.DataFrame([x[0].split(\",\") for x in np.array(df[['cellvoltage']])]).iloc[:,list(range(CellVoltNums))]\n", " df_volt.columns = cellvolt_name\n", " df_volt=df_volt.astype('float')\n", " cellvoltmax = df_volt.max(axis=1)\n", " cellvoltmin = df_volt.min(axis=1)\n", " df_volt[['cellvoltmax','cellvoltmin']] = pd.concat([cellvoltmax,cellvoltmin], axis=1)\n", " df_temp=pd.DataFrame([x[0].split(\",\") for x in np.array(df[['celltemp']])]).iloc[:,list(range(CellTempNums))]\n", " df_temp.columns = celltemp_name\n", " df_temp=df_temp.astype('float')\n", " celltempmax = df_temp.max(axis=1)\n", " celltempmin = df_temp.min(axis=1)\n", " df_temp[['celltempmax','celltempmin']] = pd.concat([celltempmax,celltempmin], axis=1)\n", " \n", " df=pd.concat([df,df_volt,df_temp],axis=1)\n", " df.drop(df.index[(df['cellvoltmin'] <0.1)], inplace=True)\n", " df.reset_index(inplace=True, drop=True)\n", " # df_table = df.drop_duplicates(subset=['SN'], keep='first', ignore_index=True)\n", " # df_table = df_table.set_index('SN')\n", " else:\n", " df = pd.DataFrame()\n", " #df_table = pd.DataFrame()\n", " cellvolt_name = []\n", " celltemp_name = []\n", " return df, cellvolt_name, celltemp_name #df_table,\n", " else:\n", " return pd.DataFrame(), [], [] # pd.DataFrame(),\n", " \n", "\n", "\n", "\n", "\n", "def get_all_files_in_folder(folder_path):\n", " all_files = []\n", " for root, dirs, files in os.walk(folder_path):\n", " for file in files:\n", " file_path = os.path.join(root, file)\n", " all_files.append(file_path)\n", " return all_files\n", "\n", "\n", "\n", "def concat_csv_files(csv_files):\n", " dfs = []\n", " for file in csv_files:\n", " df = pd.read_csv(file)\n", " dfs.append(df)\n", " return pd.concat(dfs, ignore_index=True)\n", "\n", "\n", "\n", "sn_list=['LUZAGAAA9LA012791','LUZAGAAA2LA014379','LUZAGAAA1MA020272','LUZAGAAA0MA020540','LUZAGAAA3MA033346','LUZAGAAA0MA035149', 'LUZAGAAA7MA043572','LUZAGAAA0MA070726','LUZAGAAA9NA020991','LUZAGAAA9NA022448']\n", "for i in range (0,len(sn_list)):\n", " folder_path = \"/data_highspeed/common/hz/lifecycle/{}.csv\".format(sn_list[i]) # 替换为实际的文件夹路径\n", " out_put_folder_path=\"LUZAGBDA7LA015352_charge.feather\" #/data/common/hz/lifecycle/LUZAGAAAXKA008957/\n", " # file_list = get_all_files_in_folder(folder_path)\n", " # if len(file_list) > 0:\n", " # concatenated_df = concat_csv_files(file_list)\n", " concatenated_df=pd.read_csv(folder_path)\n", "\n", "\n", "\n", "\n", " if concatenated_df is not None:\n", " df_cleaned,cellvolt_name,celltemp_name=datacleaning(concatenated_df)\n", " data_temp, df_chrg_splited, chrgr_splice_num, state_splice_num=split_data(df_cleaned)\n", " df_chrg_splited.to_feather(out_put_folder_path)\n", " print(\"Finished.\")\n", " else:\n", " print(\"No CSV files found in the folder.\")\n", " df_chrg_splited\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "py3916", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }