У меня есть dataframe в панд, которая выглядит, как этотПанды Dataframe с NA ЗНАЧЕНИЯ метания ValueError
df.head(2)
Out[25]:
CompanyName Region MachineType
recvd_dttm
2014-07-13 12:40:40 Company1 NA Machine1
2014-07-13 15:31:39 Company2 NA Machine2
Я первый принимает данные в определенном диапазоне дат, а затем пытается получить данные, которые в области НС и это MachineType Machine1.
Однако, я получаю эту ошибку: ValueError: Length mismatch: Expected axis has 4 elements, new values have 3 elements
Этот код работал, пока не добавлен столбец область и использовать эту строку: df = df[(df['Region']=='NA') & (df['CallType']=='Optia')]
Поскольку сначала данные для NA (Северная Америка) была читается в как NaN, я использовал keep_default_na=False
в моей команде read_csv.
Однако, я сделал pivot_table этот путь
result = df.groupby([lambda idx: idx.month, 'CompanyName']).agg(len).reset_index()
result.columns = ['Month', 'CompanyName', 'NumberCalls']
pivot_table = result.pivot(index='Month', columns='CompanyName', values='NumberCalls').fillna(0)
И ошибка приходит вверх по линии result.columns, хотя я не удивлюсь, если возможно, fillna (0) команда шалят , так как были другие значения NA
, которые на самом деле должны были быть NaN
, а не NorthAmerica.
Как исправить ValueError и избежать путаницы NA?
было бы лучше для вас, чтобы просто заменить все 'NaN' что-то вроде«Northam». Вы можете сделать это 'df = df.replace (np.NaN, 'NorthAm')' – Plug4
@ Plug4 Да, это была бы хорошая тактика, однако есть некоторые фактические записи NaN, которые я хочу остаться NaN. Они находятся в другом столбце, но есть ли способ заменить NA на NorthAm только в столбце Region? – jenryb
Да! См. Мой ответ ниже – Plug4