我有 2 個 dfs:df 和 df0df 看起來像這樣:foo bar bazA 1 5A 1 10A 1 18A 2 14A 2 18A 2 22A 6 6A 6 15df0 像這樣:foo bar bazA 1 0A 2 7A 6 5在兩個 dfs 中,“foo”可以采用除“A”之外的其他值。我想向 df 的每一行添加 df0 的行數,其中 row.foo == df0.foo 且 row.bar < df0.bar 且 row.baz >= df0.baz。因此,輸出將是:foo bar baz nA 1 5 0A 1 10 2A 1 18 2A 2 14 1A 2 18 1A 2 22 1A 6 6 0A 6 15 0我有一個工作版本(如下),但它迭代 df,這本質上很慢(約 30 次迭代/秒,df 可以有數百萬行)。是否有矢量化/更快的方法來完成相同的任務?rows = []for row in df.itertuples(): rows.append([row.baz, row.foo, row.bar, len(df0.loc[(row.bar < df0.bar) & (row.baz >= df0.baz) & (row.foo == df0.foo)])])df = pd.DataFrame(rows, columns=["baz", "foo", "bar", "n"])
Pandas 根據條件計算其他 df 中的行數
慕的地8271018
2023-07-11 10:38:00