熊猫布尔值的“平均值”

mea*_*312 3 python pandas

我真的很困惑,为什么只显示 False 结果而不是像 0.8 那样,因为第 3 列(Value3)有 4 个 true 和 1 个 false。我读到平均值应该是可能的,但我无法解决它

也许有人可以给我一点提示我做错了什么?

data = [
    {
    "Datum": "2019-05-11",
    "Value1": True,
    "Value2": 10,
    "Value3": False,
    "Value4": 20
    },
    {
    "Datum": "2019-05-11",
    "Value1": True,
    "Value2": 20,
    "Value3": True,
    "Value4": 40
    },  
    {
    "Datum": "2019-05-11",
    "Value1": True,
    "Value2": 20,
    "Value3": True,
    "Value4": 40
    },     
    {
    "Datum": "2019-05-11",
    "Value1": True,
    "Value2": 10,
    "Value3": True,
    "Value4": 20
    },
    {
    "Datum": "2019-05-11",
    "Value1": True,
    "Value2": 20,
    "Value3": True,
    "Value4": 40
    },      
    {
    "Datum": "2019-05-12",
    "Value1": True,
    "Value2": 30,
    "Value3": True,
    "Value4": 50
    },
    {
    "Datum": "2019-05-12",
    "Value1": True,
    "Value2": 40,
    "Value3": True,
    "Value4": 60
    }
] 
df = pd.DataFrame(data)
ordered_df = df.groupby("Datum").agg("mean")
Run Code Online (Sandbox Code Playgroud)

结果是:

ordered_df["Value3"]
Datum
2019-05-11    False
Name: Value3, dtype: bool
Run Code Online (Sandbox Code Playgroud)

我期望这样的事情:

Datum
2019-05-11    0.8
2019-05-12    1.0
Name: Value3, dtype: float64
Run Code Online (Sandbox Code Playgroud)

编辑编辑编辑 有人可以尝试一下这个数据吗?

比我做的 DataFrame 和 groupby 的东西......仍然不是指 bool 值

input_data = data["data"]
df = pd.DataFrame(input_data)
ordered_df = df.groupby("Datum").agg("mean")
ordered_df["Notabschaltung"]
Run Code Online (Sandbox Code Playgroud)

还是一样

Datum
2019-11-12    False
Name: Notabschaltung, dtype: bool
Run Code Online (Sandbox Code Playgroud)

mak*_*kis 6

使用第二个例子我确实得到了错误。

为了克服这个问题,你可以使用:

df["Notabschaltung"] = df["Notabschaltung"]*1
Run Code Online (Sandbox Code Playgroud)

会将 True 转换为 1,将 False 转换为 0,然后

ordered_df = df.groupby("Datum").agg("mean")
ordered_df["Notabschaltung"]
Run Code Online (Sandbox Code Playgroud)

基准

2019-11-12 0.0

名称:Notabschaltung,dtype:int64