Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将标题和值列表转换为数据帧_Python_Pandas_Dataframe_Google Sheets Api - Fatal编程技术网

Python 将标题和值列表转换为数据帧

Python 将标题和值列表转换为数据帧,python,pandas,dataframe,google-sheets-api,Python,Pandas,Dataframe,Google Sheets Api,我正在从Google Sheets中读取数据,并成功地将其输入: header = result.get('values', [])[0] #First line is column names values = result.get('values', [])[1:] #Everything else is data 然后,我会这样做: if not values: print('No data found.') else: df = pd.DataFrame(data=va

我正在从Google Sheets中读取数据,并成功地将其输入:

header = result.get('values', [])[0] #First line is column names
values = result.get('values', [])[1:] #Everything else is data
然后,我会这样做:

if not values:
    print('No data found.')
else:
    df = pd.DataFrame(data=values, columns=header)
    print(df.head(10))
但我有一个错误:

AssertionError:传递了26列,传递的数据有14列


如果我打印标题或值,我将成功获取列表中的数据。

首先可以使用当前值创建数据框,然后使用NaN和concat将其余列一起创建数据框:

df = pd.DataFrame(data=values, columns=header[:14])
df2 = pd.DataFrame({head : [np.NaN]*len(df) for head in header[14:]})

df_final = pd.concat([df, df2], axis=1)
问:你怎么知道5297中的14列


答:因为您的值包含行,所以5297是数据中的行数。

lenvalues是5297,lenheader是26。我可能不想硬编码,因为数据将不时添加到其中。标题中的列数与值中的列数不一致。因此是26对14。尝试第一个lenpd.DataFramedata=values.columns。其输出为14。所以在谷歌的工作表上,14列有数据,15到26列还没有数据。但是列名在那里,所以熊猫应该只在其值中添加空格,对吗?这样不行:你能试试吗:df=pd.DataFramedata=values,columns=header[:14]这很好用。那么剩下的列呢,它们在那里但没有价值?我该怎么处理它们呢?等待数据还是有办法?非常感谢。我只想分享一下你写的14行,我添加了lenpd.DataFramedata=values.columns,这样我就不用担心数据何时更新,它会自动选择行数。是的,这一点很好。没问题,祝Python和熊猫好运: