【发布时间】:2021-11-10 03:16:36
【问题描述】:
我有一个需要为其创建新列的数据集。这个新列需要与在 groupby 中找到的值等效。
例如:
我有这个数据框:
data = [
["A", 1, "special","aaa", 64],
["A", 1,"special", "bbb", 140],
["A", 2,"notspecial", "aaa", 25],
["A", 2,"notspecial", "bbb", 12],
["A", 3,"notspecial", "aaa", 85],
["A", 3,"notspecial", "bbb", 10],
["B", 1,"special", "ccc", 200],
["B", 2,"notspecial", "ccc", 350],
["B", 3,"notspecial", "ccc", 500],
["B", 4,"notspecial", "ccc", 651],
]
df = pd.DataFrame(data, columns=["ID", "Subset", "Description","Category", "Value"])
df
我需要使用新列创建此数据集的版本,此新列需要是 special 行的 Value,由 ID 和 Category 分组。 (请注意,在某些情况下,不会有多个类别,而在某些情况下会有)。基本上,整列仅包含 ID 和 Category groupby 的 special 值。如下:
data = [
["A", 1, "special", "aaa", 64, 64],
["A", 1, "special", "bbb", 140, 140],
["A", 2, "notspecial", "aaa", 25, 64],
["A", 2, "notspecial", "bbb", 12, 140],
["A", 3, "notspecial", "aaa", 85, 64],
["A", 3, "notspecial", "bbb", 10, 140],
["B", 1, "special", "ccc", 200, 200],
["B", 2, "notspecial", "ccc", 350, 200],
["B", 3, "notspecial", "ccc", 500, 200],
["B", 4, "notspecial", "ccc", 651, 200],
]
df = pd.DataFrame(
data, columns=["ID", "Subset", "Description", "Category", "Value", "special_value"]
)
df
我以前用过:
# create new column dedicated to untreated mean raw value severity values across trial ids
df["special_value"] = (
df.where(
df["Description"].eq("special")
)
.groupby(["ID", "Category"])["Value"]
.transform("mean")
)
但这仅适用于 groupby 只是 ID 而不是当我添加 Category 时。
任何帮助将不胜感激!
谢谢!
【问题讨论】:
-
我不太明白。你能包括预期的输出吗?
-
我用第二个屏幕截图和数据框做了!
special_value列是我要创建的新列。我还添加了一些希望澄清的编辑。
标签: python pandas dataframe group-by