我在创建熊猫数据框时遇到了麻烦。有人可以解释代码出了什么问题。
column1 = ['hello']
column2 = ['world']
index = ['a','b','c']
data1 = np.linspace(0,3,1)
data2 = np.arange(3)
data = [data1, data2]
columns = [column1, column2]
df = pd.DataFrame(data = data, columns= columns, index = index)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 387, in __init__
arrays, columns = _to_arrays(data, columns, dtype=dtype)
File "/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 7483, in _to_arrays
dtype=dtype)
File "/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 7540, in _list_to_arrays
coerce_float=coerce_float)
File "/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 7598, in _convert_object_array
con=len(content)))
AssertionError: 2 columns passed, passed data had 3 columns
答案 0 :(得分:0)
您的对象data1具有三个元素。行空间创建一维数组,您需要二维数组才能代表3行和2列。
data1 = np.linspace(0,3,1)
您应该创建3行2列的数组。
答案 1 :(得分:0)
有两个问题:
np.linspace(0,3,3)
来制作长度为3的数组。pd.DataFrame
,它将把它们解释为2D数组的行而不是列。这是错误“传递的数据有3列”的来源。请改用dict
,这是首选方法。 因此,请尝试以下操作:
>>> import numpy as np
>>> import pandas as pd
>>> index = ['a','b','c']
>>> data1 = np.linspace(0,3,1)
>>> data2 = np.arange(3)
>>> data1 = np.linspace(0,3,3)
>>> df = pd.DataFrame({'hello':data1, 'world':data2}, index=index)
>>> df
hello world
a 0.0 0
b 1.5 1
c 3.0 2