簡體   English   中英

鍵控錯誤:“系列”對象是可變的,因此它們不能被散列

[英]Keying Error: 'Series' objects are mutable, thus they cannot be hashed

剛開始使用 Python 並遇到此錯誤。

我有兩個數據框 A 和 B。我使用輸入列之一來鍵入 A,然后將兩者結合起來,我想鍵入 B。我在第二個打印步驟中遇到錯誤。 我確實查看了其他類似的線程,但沒有找到解決方案。 你能幫我修一下嗎?

import pandas as pd
A = pd.DataFrame([
    {"AC1":"V1", "AC2":"190801"},
    {"AC1":"V2", "AC2":"200414"},
    ])
A = A.set_index("AC1")

B = pd.DataFrame([
    {"BC1":"V1","BC2":"190801","BC3":"2019-10-01"},
    {"BC1":"V1","BC2":"191201","BC3":"2019-12-01"},
    {"BC1":"V2","BC2":"200414","BC3":"2020-01-24"}
    ])
B["BC3"] = pd.to_datetime(B["BC3"])
B = B.set_index(["BC1","BC2"])

input = pd.DataFrame([
    {"X":"V1","State":"FL","Z":100},
    {"X":"V2","State":"CA","Z":130},
    ])

for item in input["X"].unique():
    p1 = A.loc[item]
    print(p1)
    p2 = B.loc[[(item,p1)],"BC3"]
    print(p2)

類型錯誤:“系列”對象是可變的,因此它們不能被散列

如果我理解正確,您想使用“輸入”數據幀的 X 列的每個唯一值,在 A 數據幀中查找,從中獲取 AC2 值,然后使用 X 的值加上AC2 的值以在 B 數據幀中查找 BC3 中的值。 那正確嗎?

如果是這樣,您只需要在以p1 =開頭的行中添加一個列選擇器,並從以p2 =開頭的行中刪除一組括號

這對我有用:

for item in input["X"].unique():
    p1 = A.loc[item, "AC2"]
    print(p1)
    p2 = B.loc[(item, p1), "BC3"]
    print(p2)

我從中得到以下輸出:

190801
2019-10-01 00:00:00
200414
2020-01-24 00:00:00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM