Я создал фреймворк с библиотекой pandas. Я хочу добавить столбец в фрейм данных. Однако я получаю следующее сообщение об ошибке. Но я думаю, что мне нужно ввести столько данных, сколько строк. Как я могу ввести информацию в нужную строку и столбец? Как создать столбец без ввода данных?

import pandas as pd

kd = pd.DataFrame(data) 
insertColumns = kd.insert(0, "Age", [21, 23, 24, 21],True ) 
print(kd)

Ошибка:

ValueError: Length of values (4) does not match length of index (6)
2
sanane sanane 9 Окт 2020 в 22:52

2 ответа

Лучший ответ

Ваша проблема в том, что вы вставляете слишком мало строк. Ваш фрейм данных содержит 6 строк, вы добавляете только 4 значения в свой оператор вставки. Если вы добавляете новый столбец с данными, он должен соответствовать текущей длине:

import pandas as pd

df = pd.DataFrame({"1":list(range(6))})
df.insert(0, "Age", [21, 23, 24, 21],True )
# Length of values does not match length of index

Вы можете добавить новый пустой столбец следующим образом:

df["new_col"] = None

# or

df.insert(0,"Age", None, True)  # to get a new colum at position 0 all None

Или "обмануть" панд, нарезав указанные данные в списке и добавив в конце достаточное количество Nones:

# extend the data you want to give by a None-List and slice the whole down to size
df.insert(0,"Age", ([21,23,24,21] + [None]*len(df))[:len(df)], True)

Получить

    Age  1
0  21.0  0
1  23.0  1
2  24.0  2
3  21.0  3
4   NaN  4   # only 2 None appends needed 
5   NaN  5
2
Patrick Artner 9 Окт 2020 в 20:13

Это работает

kd = pd.DataFrame(data) 
kd["col_name"]=[21, 23, 24, 21]

Для этого вам нужно убедиться, что длина списка равна количеству строк. если некоторые строки пусты, вам нужно сделать это

kd["col_name"]=[21,None, 23, 24,None, 21]

Для ввода информации в нужную строку и столбец u можно сделать, как показано ниже

kd.loc["index_name","col_name"]=value
2
navaneeth nanda 9 Окт 2020 в 20:04