Python Pandas ValueError数组必须全部相同

Blu*_*and 11 python pandas

迭代一大堆.mp3链接以获取元数据标签并将其保存到Excel文件中.导致此错误.我感谢任何帮助.谢谢.

    #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
Run Code Online (Sandbox Code Playgroud)

Viv*_*san 30

你可以这样做,以避免这个错误

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

  • 这到底是做什么的? (13认同)

rtr*_*trt 7

您可以用空元素填充最短的列表:

def pad_dict_list(dict_list, padel):
    lmax = 0
    for lname in dict_list.keys():
        lmax = max(lmax, len(dict_list[lname]))
    for lname in dict_list.keys():
        ll = len(dict_list[lname])
        if  ll < lmax:
            dict_list[lname] += [padel] * (lmax - ll)
    return dict_list
Run Code Online (Sandbox Code Playgroud)

  • @loretoparisi,您想将其用作填充字典值的元素 (3认同)

kyp*_*mer 5

告诉您数组(行,标题,终结者等)的长度不同。您可以通过以下方式对此进行测试

print(len(lines), len(titles), len(finalsingers)) # Print all of them out here
Run Code Online (Sandbox Code Playgroud)

这将向您显示哪些数据格式错误,然后您需要进行一些调查以找出纠正此错误的正确方法。


小智 5

重复的变量名给我带来了这个问题