gpt4 book ai didi

python - pandas 从 B 系列中获得的条目也在 A 系列中;但仅在 A 系列中唯一的条目的填充值为 0

转载 作者:行者123 更新时间:2023-12-01 04:06:50 27 4
gpt4 key购买 nike

这是一种独特的连接/组合,但我不知道这叫什么,所以请随时用术语纠正我。

例如,我有一个系列配置文件,如下所示:

In [1]: profile = pd.Series(data=[0.8,0.64,0.51,0.5,0.5], index=['google.com','facebook.com','twitter.com', 'instagram.com', 'github.com'])

In [2]: profile
Out[2]:
google.com 0.80
facebook.com 0.64
twitter.com 0.51
instagram.com 0.50
github.com 0.50
dtype: float6

我有一个交易系列如下:

In [3]: transaction = pd.Series(data=[1,1,1,1], index=['twitter.com','facebook.com','instagram.com','9gag.com'])

In [4]: transaction
Out[4]:
twitter.com 1
facebook.com 1
instagram.com 1
9gag.com 1
dtype: int64

我想要实现的是一个系列窗口,我可以在其中比较配置文件交易:其中如果中的索引transaction 也存在于 profile 中,我们得到某个索引及其各自的值。仅在 profile 中唯一的其余索引应填充值为 0。

In [5]: window
Out[5]:
google.com 0
facebook.com 1
twitter.com 1
instagram.com 1
github.com 0
dtype: int64

是否有任何现有的内置方法/函数可以做到这一点?

我已经尝试过:

window = transaction[transaction.keys().isin(profile.keys())]

但它只返回交易配置文件的交集。我在 Series 中发现了这个 combine() 函数,但我不知道在 func 参数中应用什么(isin () 无效)。

最佳答案

从 Pandas v.0.17.0 开始,您可以重新索引该系列。

>>> transaction.reindex(profile.index).fillna(0)
google.com 0
facebook.com 1
twitter.com 1
instagram.com 1
github.com 0
dtype: float64

它似乎也比使用 loc 稍快,尽管我还没有在更大的数据帧上测试过它。

%timeit transaction.reindex(profile.index).fillna(0)
1000 loops, best of 3: 224 µs per loop

%timeit transaction.loc[profile.index].fillna(0)
1000 loops, best of 3: 329 µs per loop

关于python - pandas 从 B 系列中获得的条目也在 A 系列中;但仅在 A 系列中唯一的条目的填充值为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35447487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com