I´m having trouble creating a dataframe on my list.
The list contains four columns, but instead it says on presente one column with data:
JavaScript
x
2
1
ValueError: 4 columns passed, passed data had 1 columns.
2
The list itself is presented in this way:
JavaScript
1
6
1
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 559.64, 8.01, 0.5520765512479038]]
2
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 520.34, 7.44, 0.5393857093988743]]
3
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 556.72, 7.96, 0.5410827096899603]]
4
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 688.67, 9.84, 0.5845350761787548]]
5
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 625.3, 8.94, 0.5612954767824924]]
6
I know there is something happening due to the double [], but i can´t figure it out. Can´t someone help me?
Here is the code so far:
JavaScript
1
21
21
1
for i in range(6):
2
excel_file = pd.read_excel(input_file, sheet_name=sheet[i])
3
excel_file = excel_file.values.tolist()
4
5
filtered = [x for x in excel_file if 'TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)' in x
6
or 'TOTAL DAS DESPESAS DE CUSTEIO (A)' in x
7
]
8
9
sheet_file = sheet[i]
10
sheet_variable.append(sheet_file)
11
wb_name.append(file_name)
12
conab_data.append(filtered)
13
14
print(filtered)
15
16
df_conab = pd.DataFrame(conab_data, columns=['Descrição', 'Preço/ha', 'Scs/ha', 'Part. %'])
17
df_conab['Local/UF/Ano'] = sheet_variable
18
df_conab['Fonte'] = wb_name
19
20
print(df_conab)
21
Advertisement
Answer
you could fix this with a for loop
JavaScript
1
11
11
1
overly_nested = [[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 559.64, 8.01, 0.5520765512479038]],
2
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 520.34, 7.44, 0.5393857093988743]],
3
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 556.72, 7.96, 0.5410827096899603]],
4
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 688.67, 9.84, 0.5845350761787548]],
5
[['TOTAL DAS DESPESAS DE CUSTEIO DA LAVOURA (A)', 625.3, 8.94, 0.5612954767824924]]]
6
7
for i, sub_list in enumerate(overly_nested):
8
overly_nested[i]=sub_list[0]
9
df = pd.DataFrame(overly_nested)
10
print(df)
11
I’m sure theres a way to do this with zip()
, let me experiment and I’ll edit if I find it