我有以下数据框
\nprint(A)\n\n Index 1or0\n0 1 0\n1 2 0\n2 3 0\n3 4 1\n4 5 1\n5 6 1\n6 7 1\n7 8 0\n8 9 1\n9 10 1\nRun Code Online (Sandbox Code Playgroud)\n我有以下代码(Pandas Dataframe 计算仅立即发生的出现次数),它计算一个接一个立即发生的值的出现次数。
\nser = A["1or0"].ne(A["1or0"].shift().bfill()).cumsum()\n\nB = (\n A.groupby(ser, as_index=False)\n .agg({"Index": ["first", "last", "count"],\n "1or0": "unique"})\n .set_axis(["StartNum", "EndNum", "Size", "Value"], axis=1)\n .assign(Value= lambda d: d["Value"].astype(str).str.strip("[]"))\n )\n\nprint(B)\n\xe2\x80\x8b\n StartNum EndNum Size Value\n0 1 3 3 0\n1 4 7 4 1\n2 8 8 1 0\n3 9 10 2 1\nRun Code Online (Sandbox Code Playgroud)\n问题是,当出现 NaN 值时,代码不会将它们放在一个间隔中,而是始终将它们计数为一个大小的间隔,而不是例如 3 …