#python #pandas
#python #pandas
Вопрос:
Я получаю следующую ошибку Shape of passed values is (1, 5), indices imply (5, 5)
. Из того, что я могу сказать, это говорит о том, что набор данных не соответствует количеству столбцов, и, конечно, это, очевидно, правильно. Первоначально я думал, что это может быть связано с использованием списка, но я получаю ту же проблему при передаче в массив numpy.
Может ли кто-нибудь указать на мою глупость, так как я явно делаю что-то неправильно.
data = ['data1', 'data2', 'data3', 'data4', 'data5']
report_name = 'test.csv'
try:
df = pd.DataFrame(data, columns=['column1', 'column2', 'column3', 'column4', 'column5'], index=None)
df.sort_values('column1', ascending=True, inplace=True)
df.to_csv(report_name, index=False)
except Exception, e:
print e
Ответ №1:
вы должны передать 2d-размерный массив pd.DataFrame
для данных, если вы принудительно вводите форму, передавая columns
data = [['data1', 'data2', 'data3', 'data4', 'data5']]
df = pd.DataFrame(data, columns=['column1', 'column2', 'column3', 'column4', 'column5'])
Комментарии:
1. хм, я попытался сделать то, что, как я думал, было этим, используя массив numpy. Думаю, я тоже неправильно понял массивы numpy:(. Приятно и просто, когда вы знаете, как :). спасибо, что указали на это
2. @iNoob, это просто деталь, потому что вы пытаетесь создать фрейм данных с 1 строкой, что не очень полезно. На практике вы всегда передаете список list или 2d np-массив, поэтому вам не нужно беспокоиться об этом
Ответ №2:
Вы пропустили скобки списка вокруг data
df = pd.DataFrame(data = [data], columns=['column1', 'column2', 'column3', 'column4', 'column5'], index=None)
Что следует отметить:
pd.DataFrame()
ожидает список кортежей, это означает:
data = ['data1', 'data2', 'data3', 'data4', 'data5']
df = pd.DataFrame(data)
# This implies every element in the list `data` is a tuple
print(df)
Out[]: 0
0 data1
1 data2
2 data3
3 data4
4 data5
В отличие от :
data = ['data1', 'data2', 'data3', 'data4', 'data5']
df = pd.DataFrame([data])
# This implies that the list `data` is the first tuple
print(df)
Out[]: 0 1 2 3 4
0 data1 data2 data3 data4 data5