[英]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.