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
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.
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.
You can convert a dictionary to Pandas Dataframe using df = pd. DataFrame. from_dict(my_dict) statement.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With