TypeError: "DataFrame' object is not callable"
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']}))
但是,我遇到了这个类型错误:'DataFrame' 对象不可调用。
我应该如何处理我的代码才能得到合适的结果?
您收到此错误是因为您使用了 df(..)
。这是调用函数的 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'
- 生成 Series bool 类型,
说明当前行是否有 金发 头发。
df[…]
- 获取满足上述条件的行。
Age
- 从上面的行中只取 Age 列。
mean()
- 计算平均年龄。
正如已经指出的那样,错误的产生是因为您使用了括号来将可调用对象作为函数调用。相反,您应该使用用于切片和 select 数据的括号。
作为建议,我建议您使用 groupby 方法来检查人口统计数据。在这里,如果你想知道你的可观察值的平均值,你可以做头发颜色的函数:
df.groupby("Hair colour").mean()
那会 return 你以下
Hair colour
Age
Length (in cm)
Weight (in kg)
Black
23.75
175.775
70.7
Blonde
20.0
194.5666666666667
71.16666666666667
Brown
21.0
179.0
74.60000000000001
由此可见,金发女郎的平均年龄是 20 岁。
如果你想检索这个特定的值,你可以这样做:
df.groupby("Hair colour").mean()["Age"]["Blonde"]
我是这里的新手。英语不是我的母语,所以请原谅任何语法错误。我正在尝试根据 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']}))
但是,我遇到了这个类型错误:'DataFrame' 对象不可调用。
我应该如何处理我的代码才能得到合适的结果?
您收到此错误是因为您使用了 df(..)
。这是调用函数的 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'
- 生成 Series bool 类型, 说明当前行是否有 金发 头发。df[…]
- 获取满足上述条件的行。Age
- 从上面的行中只取 Age 列。mean()
- 计算平均年龄。
正如已经指出的那样,错误的产生是因为您使用了括号来将可调用对象作为函数调用。相反,您应该使用用于切片和 select 数据的括号。
作为建议,我建议您使用 groupby 方法来检查人口统计数据。在这里,如果你想知道你的可观察值的平均值,你可以做头发颜色的函数:
df.groupby("Hair colour").mean()
那会 return 你以下
Hair colour | Age | Length (in cm) | Weight (in kg) |
---|---|---|---|
Black | 23.75 | 175.775 | 70.7 |
Blonde | 20.0 | 194.5666666666667 | 71.16666666666667 |
Brown | 21.0 | 179.0 | 74.60000000000001 |
由此可见,金发女郎的平均年龄是 20 岁。
如果你想检索这个特定的值,你可以这样做:
df.groupby("Hair colour").mean()["Age"]["Blonde"]