我从BigQuery上的开放数据Github数据创建了BigQuery数据集。
我现在将这些数据(两个不同的表)作为数据帧导入到熊猫中,并且工作正常。当我在连接列上调用“类型”时,它们都以pd.Series出现。
这是我的剧本:
from google.cloud import bigquery
from google.oauth2 import service_account
from google.cloud import bigquery_storage_v1beta1
from sklearn.model_selection import train_test_split
import pandas as pd
credentials = service_account.Credentials.from_service_account_file(
'XXXXXXXXX.json')
project_id = 'XXXXXX'
client = bigquery.Client(credentials= credentials, project=project_id)
bqstorageclient = bigquery_storage_v1beta1.BigQueryStorageClient(
credentials=credentials
)
language_query = """
SELECT repo_name, Language, Bytes,
CASE
when LOWER(Language) NOT IN ('javascript', 'python', 'ruby', 'java'
, 'php', 'c++', 'css', 'c#', 'go'
, 'c', 'typescript', 'shell', 'swift'
, 'scala', 'objective-c') then 'Other'
else Language END AS language_category
FROM github_project.langauges
LIMIT 1000"""
language_query_dataframe = (
client.query(language_query)
.result()
.to_dataframe(bqstorage_client=bqstorageclient)
)
commit_query = """
SELECT Commit, Author, DateSeconds, repo_name
FROM github_project.commits
LIMIT 1000
"""
commit_query_dataframe = (
client.query(commit_query)
.result()
.to_dataframe(bqstorage_client=bqstorageclient)
)
merged_data = pd.merge(commit_query_dataframe, language_query_dataframe, on='repo_name')
最后一行,
merged_data = pd.merge(commit_query_dataframe, language_query_dataframe, on='repo_name')
引发错误:
TypeError: unhashable type: 'numpy.ndarray'
数组从哪里来?我找不到答案,也无法理解为什么合并两个系列应该可以解决这个问题。
任何帮助都会很棒。预先感谢
答案 0 :(得分:1)
我发现了问题-它在BigQuery方面。 repo_name是BigQuery表中的一个数组,我想念它,所以在我的原始查询中使用UNNEST解决了这个问题。
留给遇到此问题的任何人。检查并确保您的联接列在BigQuery上的类型不是“重复”。