Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Pandas ValueError Arrays Must be All Same Length

Tags:

python

pandas

Iterates over a big list of .mp3 links to get the metadata tags and save it to an Excel file. Results in this error. I appreciate any help. Thanks.

    #print is_connected();      # Create a Pandas dataframe from the data. df = pd.DataFrame({'Links' : lines ,'Titles' : titles , 'Singers': finalsingers , 'Albums':finalalbums , 'Years' : years})       # Create a Pandas Excel writer using XlsxWriter as the engine. writer = pd.ExcelWriter(xlspath, engine='xlsxwriter')      # Convert the dataframe to an XlsxWriter Excel object. df.to_excel(writer, sheet_name='Sheet1')     #df.to_excel(writer, sheet_name='Sheet1')       # Close the Pandas Excel writer and output the Excel file. writer.save()  Traceback (most recent call last):   File "mp.py", line 87, in <module>     df = pd.DataFrame({'Links' : lines ,'Titles' : titles , 'Singers': finalsingers , 'Albums':finalalbums , 'Years' : years})   File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 266, in __init__     mgr = self._init_dict(data, index, columns, dtype=dtype)   File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 402, in _init_dict     return _arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)   File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 5409, in _arrays_to_mgr     index = extract_index(arrays)   File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 5457, in extract_index     raise ValueError('arrays must all be same length') ValueError: arrays must all be same length 
like image 306
Blue Island Avatar asked Nov 05 '16 18:11

Blue Island


People also ask

How do you fix Valueerror all arrays must be of the same length?

The error can be fixed by adding the values to the deficient list or deleting the list with a larger length if it has some useless values. NaN or any other value can be added to the deficient value based on the observation of the remaining values in the list.

How do you transpose a matrix in pandas?

Pandas DataFrame: transpose() functionThe transpose() function is used to transpose index and columns. Reflect the DataFrame over its main diagonal by writing rows as columns and vice-versa. If True, the underlying data is copied. Otherwise (default), no copy is made if possible.

How do you turn a dictionary into a data frame?

You can convert a dictionary to Pandas Dataframe using df = pd. DataFrame. from_dict(my_dict) statement.


2 Answers

you can do this to avoid that error

a = {'Links' : lines ,'Titles' : titles , 'Singers': finalsingers , 'Albums':finalalbums , 'Years' : years} df = pd.DataFrame.from_dict(a, orient='index') df = df.transpose() 

Explanation:

This creates the DataFrame as each key (e.g. 'Links') was a row and like this the missing values are actually missing columns which is no problem for pandas (only missing rows lead to ValueError during creation) After that you transpose the DataFrame (flip the axis) and make the rows to columns, which results the DataFrame you initially wanted.

like image 194
Vivek Srinivasan Avatar answered Oct 10 '22 23:10

Vivek Srinivasan


It's telling you that the arrays (lines, titles, finalsingers, etc...) are not of the same length. You can test this by

print(len(lines), len(titles), len(finalsingers)) # Print all of them out here 

This will show you which data is malformed and then you'll need to do some investigating into what the right way to correct this is.

like image 27
kypalmer Avatar answered Oct 10 '22 22:10

kypalmer