使用 gspread 中的 gc.open_by_url 跳过导入语句中的第一行(即添加 header=0)
Skip first line in import statement using gc.open_by_url from gspread (i.e. add header=0)
pandas
中的 header=0
的等价物是什么,它将第一行识别为 gspread
中的标题?
pandas导入语句(正确)
import pandas as pd
# gcp / google sheets URL
df_URL = "https://docs.google.com/spreadsheets/d/1wKtvNfWSjPNC1fNmTfUHm7sXiaPyOZMchjzQBt1y_f8/edit?usp=sharing"
raw_dataset = pd.read_csv(df_URL, na_values='?',sep=';'
, skipinitialspace=True, header=0, index_col=None)
到目前为止,我使用 gspread 函数导入数据,将第一行更改为标题,然后删除第一行,但这会将 DataFrame 中的所有内容识别为字符串。我想在导入语句中立即将第一行识别为标题。
需要 header=True 等效的 gspread 导入语句
import pandas as pd
from google.colab import auth
auth.authenticate_user()
import gspread
from oauth2client.client import GoogleCredentials
# gcp / google sheets url
df_URL = "https://docs.google.com/spreadsheets/d/1wKtvNfWSjPNC1fNmTfUHm7sXiaPyOZMchjzQBt1y_f8/edit?usp=sharing"
# importing the data from Google Drive setup
gc = gspread.authorize(GoogleCredentials.get_application_default())
# read data and put it in dataframe
g_sheets = gc.open_by_url(df_URL)
df = pd.DataFrame(g_sheets.get_worksheet(0).get_all_values())
# change first row to header
df = df.rename(columns=df.iloc[0])
# drop first row
df.drop(index=df.index[0], axis=0, inplace=True)
查看 API documentation,您可能想使用:
df = pd.DataFrame(g_sheets.get_worksheet(0).get_all_records(head=1))
.get_all_records
方法 return 是一个字典,其中列 headers 作为键,列值列表作为字典值。参数 head=<int>
确定将哪一行用作键;行从 1 开始并遵循电子表格的编号。
由于 .get_all_records()
编辑的值 return 是字符串列表,因此数据框构造函数 pd.DataFrame
将 return 一个全是字符串的数据框。要将其转换为浮点数,我们需要替换空字符串,并将 dash-only 字符串 ('-'
) 替换为 NA-type 值,然后转换为 float
.
幸运的是 pandas DataFrame 有一个方便的方法来替换值 .replace
。我们可以将它从我们想要的字符串作为 NA 映射传递到 None,后者被转换为 NaN。
import pandas as pd
data = g_sheets.get_worksheet(0).get_all_records(head=1)
na_strings_map= {
'-': None,
'': None
}
df = pd.DataFrame(data).replace(na_strings_map).astype(float)
pandas
中的 header=0
的等价物是什么,它将第一行识别为 gspread
中的标题?
pandas导入语句(正确)
import pandas as pd
# gcp / google sheets URL
df_URL = "https://docs.google.com/spreadsheets/d/1wKtvNfWSjPNC1fNmTfUHm7sXiaPyOZMchjzQBt1y_f8/edit?usp=sharing"
raw_dataset = pd.read_csv(df_URL, na_values='?',sep=';'
, skipinitialspace=True, header=0, index_col=None)
到目前为止,我使用 gspread 函数导入数据,将第一行更改为标题,然后删除第一行,但这会将 DataFrame 中的所有内容识别为字符串。我想在导入语句中立即将第一行识别为标题。
需要 header=True 等效的 gspread 导入语句
import pandas as pd
from google.colab import auth
auth.authenticate_user()
import gspread
from oauth2client.client import GoogleCredentials
# gcp / google sheets url
df_URL = "https://docs.google.com/spreadsheets/d/1wKtvNfWSjPNC1fNmTfUHm7sXiaPyOZMchjzQBt1y_f8/edit?usp=sharing"
# importing the data from Google Drive setup
gc = gspread.authorize(GoogleCredentials.get_application_default())
# read data and put it in dataframe
g_sheets = gc.open_by_url(df_URL)
df = pd.DataFrame(g_sheets.get_worksheet(0).get_all_values())
# change first row to header
df = df.rename(columns=df.iloc[0])
# drop first row
df.drop(index=df.index[0], axis=0, inplace=True)
查看 API documentation,您可能想使用:
df = pd.DataFrame(g_sheets.get_worksheet(0).get_all_records(head=1))
.get_all_records
方法 return 是一个字典,其中列 headers 作为键,列值列表作为字典值。参数 head=<int>
确定将哪一行用作键;行从 1 开始并遵循电子表格的编号。
由于 .get_all_records()
编辑的值 return 是字符串列表,因此数据框构造函数 pd.DataFrame
将 return 一个全是字符串的数据框。要将其转换为浮点数,我们需要替换空字符串,并将 dash-only 字符串 ('-'
) 替换为 NA-type 值,然后转换为 float
.
幸运的是 pandas DataFrame 有一个方便的方法来替换值 .replace
。我们可以将它从我们想要的字符串作为 NA 映射传递到 None,后者被转换为 NaN。
import pandas as pd
data = g_sheets.get_worksheet(0).get_all_records(head=1)
na_strings_map= {
'-': None,
'': None
}
df = pd.DataFrame(data).replace(na_strings_map).astype(float)