假设我在 pandas DataFrame 中有三列,没有任何 null 或空值。
数据示例:
专栏供应商 | 栏目 | 色谱柱设施 |
---|---|---|
V1 | I1 | F1 |
V1 | I1 | F2 |
V2 | I1 | F4 |
V1 | I2 | F1 |
V1 | I2 | F2 |
V2 | I2 | F3 |
V3 | I2 | F5 |
V3 | I2 | F6 |
V3 | I3 | F3 |
V1 | I4 | F2 |
V4 | I4 | F4 |
V4 | I4 | F5 |
V1 | I5 | F1 |
V1 | I5 | F4 |
如何创建包含以下内容的 DataFrame?:“对于每个项目,如果有多个供应商与该项目关联,请为我提供该项目的所有行(否则排除与该项目关联的所有行)。”
在此示例中,我想要 I1、I2 和 I4 的所有行的 DataFrame,因为它们有多个与其关联的唯一供应商,并且我将排除涉及 I3 和 I5 的所有行,因为只有一个供应商与它们关联他们。
我尝试为每个项目循环创建一个唯一供应商列表,条件为
len(Appended_Vendor_List_var) > 1
,但到目前为止还没有成功。
这可能就是您正在寻找的:
import pandas as pd
df = pd.DataFrame(
[
["V1", "I1", "F1"],
["V1", "I1", "F2"],
["V2", "I1", "F4"],
["V1", "I2", "F1"],
["V1", "I2", "F2"],
["V2", "I2", "F3"],
["V3", "I2", "F5"],
["V3", "I2", "F6"],
["V3", "I3", "F3"],
["V1", "I4", "F2"],
["V4", "I4", "F4"],
["V4", "I4", "F5"],
["V1", "I5", "F1"],
["V1", "I5", "F4"],
],
columns=["Column Vendor", "Column Item", "Column Facility"],
)
df = df.join(
df.groupby("Column Item").count()["Column Vendor"].rename("Multiple Vendors") > 1,
on="Column Item",
)
df = df[df["Multiple Vendors"]].drop(columns="Multiple Vendors")