提问人:user17059762 提问时间:9/20/2022 最后编辑:user17059762 更新时间:9/26/2022 访问量:55
在 pandas 中复制 excel COUNTIF 的输出
Replicating output of excel COUNTIFs in pandas
问:
我有包含以下列的数据集 - Source、Sink、StartDate、EndDate、Class、MW、ClearingPrice。我正在尝试创建一个列 (Path_Repeat),如果数据集中存在相同的 StartDate 和 EndDate 的特定源-接收器组合反向,则该列取值 1。
我能够通过使用 =COUNTIFS(A:A,B2,B:B,A2,C:C,C2,D:D,D2,E:E,E2) 在 excel 中做到这一点。我想知道是否有一种方法可以在熊猫中比 excel 更快。
答:
1赞
Laurent
9/26/2022
#1
使用以下玩具数据帧:
df = pd.DataFrame(
{
"Source": ["A", "B", "A", "B"],
"Sink": ["B", "A", "C", "A"],
"StartDate": ["1/1/2010", "1/1/2010", "1/1/2010", "2/1/2010"],
"EndDate": ["31/1/2010", "31/1/2010", "31/1/2010", "31/1/2010"],
}
)
这是一种方法:
# Create a new column for comparison
df["key"] = df.apply(lambda x: x["Source"] + x["Sink"], axis=1)
df["key"] = df["key"].apply(lambda x: "".join(sorted(x)))
# Search for duplicates
df.loc[
df.duplicated(subset=["StartDate", "EndDate", "key"], keep=False), "Path_Repeat"
] = 1
# Cleanup
df = df.fillna(0).astype({"Path_Repeat": int})
Source Sink StartDate EndDate key Path_Repeat
0 A B 1/1/2010 31/1/2010 AB 1
1 B A 1/1/2010 31/1/2010 AB 1
2 A C 1/1/2010 31/1/2010 AC 0
3 B A 2/1/2010 31/1/2010 AB 0
上一个:在Excel中分隔数字和文本
评论
COUNTIFS