У меня есть dataframe, который содержит: TIMESTAMP
, P_ACT_KW
и P_SOUSCR
.Добавление нового столбца для подстроки: Длина значений не соответствует длине индекса
df2 = pd.read_csv('C:/Users/Demonstrator/Downloads/power.csv',delimiter=';')
Во-первых, я бросил недостающие наблюдения:
df_no_missing = df2.dropna()
Затем я пытаюсь добавить новый столбец с именем depassement
, который содержит значение 0 if(df2['P_ACT_KW'] - df2['P_SOUSCR']) < 0 else df2['P_ACT_KW']- df2['P_SOUSCR']
.
df_no_missing['depassement'] = np.where((df_no_missing['P_SOUSCR'] - df_no_missing['P_ACT_KW']) < 0), 0, df_no_missing['P_ACT_KW'] - df_no_missing['P_SOUSCR']
Но я получаю эту ошибку:
ValueError Traceback (most recent call last) in() ----> 1 df_no_missing['depassement'] = np.where((df_no_missing['P_SOUSCR'] - df_no_missing['P_ACT_KW']) 2357 self._set_item(key, value) 2358 2359 def _setitem_slice(self, key, value): C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\frame.py in _set_item(self, key, value) 2421 2422 self._ensure_valid_index(value) -> 2423 value = self._sanitize_column(key, value) 2424 NDFrame._set_item(self, key, value) 2425 C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\frame.py in _sanitize_column(self, key, value) 2576 2577 # turn me into an ndarray -> 2578 value = _sanitize_index(value, self.index, copy=False) 2579 if not isinstance(value, (np.ndarray, Index)): 2580 if isinstance(value, list) and len(value) > 0: C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\series.py in _sanitize_index(data, index, copy) 2768 2769 if len(data) != len(index): -> 2770 raise ValueError('Length of values does not match length of ' 'index') 2771 2772 if isinstance(data, PeriodIndex): ValueError: Length of values does not match length of index
Любая идея, пожалуйста, чтобы решить эту проблему?
Похоже, потребность 'df_no_missing [ 'depassement'] = np.where ((df_no_missing ['P_SOUSCR'] - df_no_missing ['P_ACT_KW']) <0, 0, df_no_missing ['P_ACT_KW'] - df_no_missing ['P_SOUSCR']) ', конечная скобка была добавлена, а другая удалена. – jezrael
@jezrael большое спасибо, Когда я добавляю parenthese, я получил это предупреждающее сообщение: «C: \ Users \ Demonstrator \ Anaconda3 \ lib \ site-packages \ ipykernel \ __ main__.py:1: SettingWithCopyWarning: Значение пытаясь быть установленным на копии среза из DataFrame. Попробуйте использовать .loc [row_indexer, col_indexer] = значение вместо См. оговорки в документации: http://pandas.pydata.org/pandas-docs/ stable/indexing.html # indexing-view-versus-copy if __name__ == '__main__': " – Bio
Когда у вас есть большое сообщение трассировки, форматирование его как кода лучше для чтения, потому что цитирование обертывает текст (это невозможно впоследствии исправить это). Можете ли вы опубликовать трассировку, завернутую в '
', пожалуйста? – ayhan