簡體   English   中英

TypeError:“DataFrame'object 不可調用”

[英]TypeError: "DataFrame' object is not callable"

我是這里的新手。 英語不是我的母語,所以請原諒任何語法錯誤。 我正在嘗試根據df中的數據計算金發女郎的平均年齡:

    np.random.seed(0)
df = pd.DataFrame({'Age':[18, 21, 28, 19, 23, 22, 18, 24, 25, 20],
                   'Hair colour':['Blonde', 'Brown', 'Black', 'Blonde', 'Blonde', 'Black','Brown', 'Brown', 'Black', 'Black'],
                   'Length (in cm)':np.random.normal(175, 10, 10).round(1),
                   'Weight (in kg)':np.random.normal(70, 5, 10).round(1)},
                index = ['Leon', 'Mirta', 'Nathan', 'Linda', 'Bandar', 'Violeta', 'Noah', 'Niji', 'Lucy', 'Mark'],)

我需要得到一個號碼。

首先,我嘗試使用“df.divide”。

    # 1. Here we import pandas
import pandas as pd
# 2. Here we import numpy
import numpy as np
ans_3 = df({'Age'}).divide(df({'Hair colour': ['Blonde']}))

但是,我得到了這個 TypeError: 'DataFrame' object is not callable。

我應該如何處理我的代碼才能得到適當的結果?

您收到此錯誤是因為您使用了df(..) 這是調用 function 的 python 語法。您可能需要df[..]代替。

回答你的問題:

(
    df  # given your data
      [df["Hair colour"] == "Blonde"]  # only look at blonde people
    ["Age"]  # for those in the Age column
    .mean()  # and compute the mean
)

跑步:

df[df['Hair colour'] == 'Blonde'].Age.mean()

細節:

  • df['Hair colour'] == 'Blonde' - 生成一系列bool類型,說明當前行是否有金色頭發。
  • df[…] - 獲取滿足上述條件的行。
  • Age - 從上面的行中只取年齡列。
  • mean() - 計算平均年齡。

正如已經指出的那樣,由於您使用括號將可調用的 object 調用為 function,因此會出現錯誤。 相反,您應該使用用於切片和 select 數據的括號。

作為建議,我建議您使用 groupby 方法來檢查人口統計數據。 在這里,如果你想知道頭發顏色的 function 的可觀察值的平均值,你可以這樣做:

df.groupby("Hair colour").mean()

那會返回你以下

頭發的顏色 年齡 長度(厘米) 重量(千克)
黑色的 23.75 175.775 70.7
金發女郎 20.0 194.5666666666667 71.16666666666667
棕色的 21.0 179.0 74.60000000000001

因此你可以看到金發人的平均年齡是 20 歲。

如果你想檢索這個特定的值,你可以這樣做:

df.groupby("Hair colour").mean()["Age"]["Blonde"]

暫無
暫無

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

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