Я пытаюсь построить новый DataFrame из некоторых предыдущих кадров данных, которые я получил из CSV, и сделал некоторые вычисления с чем-то вродеСочетание двух частей Dataframes: «ValueError: длина массива 1 не соответствует длине индекса 586»
addtest = pd.DataFrame({'coordinates': 123456,
'level1': RainD.level,
'coordinates1': 789,
'level2':RainD2.level})
в приведенном выше примере, level1
и level2
просто импортированы уровни из CSV, без чего-либо к ним применяются, и я получаю новый dataframe без проблем, даже если уровни от 2-х разных файлов CSV имеют разные начала и даты окончания (что является преднамеренным).
Однако, если я пытаюсь «та же» в моем полном сценарии, он ошибка с
Traceback (most recent call last):
File "standardization_loop.py", line 365, in <module>
'SGW_month':Yearlist_sorted.level})
File "/usr/lib64/python2.7/site-packages/pandas/core/frame.py", line 383, in __init__
mgr = self._init_dict(data, index, columns, dtype=dtype)
File "/usr/lib64/python2.7/site-packages/pandas/core/frame.py", line 515, in _init_dict
dtype=dtype)
File "/usr/lib64/python2.7/site-packages/pandas/core/frame.py", line 5263, in _arrays_to_mgr
index = extract_index(arrays)
File "/usr/lib64/python2.7/site-packages/pandas/core/frame.py", line 5325, in extract_index
raise ValueError(msg)
ValueError: array length 1 does not match index length 586
Что эта ошибка хочет мне сказать?
Что я сделал, чтобы добраться:
Combined_df = pd.DataFrame({'Coordinates':Coordinates,
'SGW_year':RainD_SGW.level,
'SGW_month':Yearlist_sorted.level})
Редактировать (см комментарии тоже): Координаты просто цифры, однако если удалить эту часть, я все еще получаю ошибку, хотя это теперь изменен на AssertionError: Block shape incompatible with manager
. Или я пропустил этот тип в первый раз? Но все же, согласно приведенным ниже тестам, два dataframe уровни должны соответствовать:
И чтобы убедиться, что они на самом деле соответствия и не имеют дубликаты, я также смотрел на RainD_SGW.level
и Yearlist_sorted.level
перед:
Yearlist_sorted.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 586 entries, 1965-12-01 00:00:00 to 2014-09-01 00:00:00
Data columns:
level 586 non-null values
dtypes: float64(1)None
Yearlist_sorted.index.get_duplicates()
<class 'pandas.tseries.index.DatetimeIndex'>
Length: 0, Freq: None, Timezone: None
RainD_SGW.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 586 entries, 1965-12-01 00:00:00 to 2014-09-01 00:00:00
Data columns:
level 586 non-null values
dtypes: float64(1)None
RainD_SGW.index.get_duplicates()
<class 'pandas.tseries.index.DatetimeIndex'>
Length: 0, Freq: None, Timezone: None
Выглядит хорошо? Кажется, что они имеют одинаковый размер в том же диапазоне дат, и они не страдают от дубликатов. Так что же еще?
Можете ли вы дать нам некоторую информацию о переменной 'Координаты'? Похоже, что это может быть скаляр, а не массивная структура длины '586'. – cel
«Координаты» - это всего лишь число (пока), как в моих испытаниях на ipython. Кроме того, если я удалю эту строку и просто сделаю 'Combined_df = pd.DataFrame ({'SGW_year': RainD_SGW.level, 'SGW_month': Yearlist_sorted.level})' Я все равно получаю ту же ошибку. –
Cant редактирует предыдущий комментарий: его не та же ошибка, теперь это «ошибка утверждения». Я отредактировал его в вопросе. –