gpt4 book ai didi

python - 比较列表并在python中获取索引

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:47 25 4
gpt4 key购买 nike

我有一个数据框 A['name', 'frequency'] 和一个列表 B of 'name' 两者都很长。 B 是我每天都得到的较小的一个。我必须检查 DataFrame 中是否存在 B 的“名称”元素。 A['name'] 如果它存在,我必须在每次出现在 B 中时更新数据框中该“名称”的频率,如果 B 有一些新元素,我必须将其添加为DataFrame A 中频率为 1 的新行。我必须在 python 2.7 中执行此操作。谢谢A是我这样的mac_list

mac_list.iloc[0:6]
Out[59]:
mac_address frequency
0 20c9d0892feb 2
1 28e34789c4c2 1
2 3480b3d51d5f 1
3 4480ebb4e28c 1
4 4c60de5dad72 1
5 4ca56dab4550 1

B 是我的 new_mac_list 就像这样

['20c9d0892feb' '3480b3d51d5f' '20c9d0892feb' '249cji39fj4g']

我想要像 mac_list 这样的输出

mac_address  frequency
0 20c9d0892feb 4
1 28e34789c4c2 1
2 3480b3d51d5f 2
3 4480ebb4e28c 1
4 4c60de5dad72 1
5 4ca56dab4550 1
6 249cji39fj4g 1

我试过了

b = mac_list['mac_address'].isin(new_mac_list)
b=list(b)
for i in range(len(b)):
if b[i]==True:
mac_list['frequency'].iloc[i]+=1

更新频率,但问题是频率增加了一个,即使它在 new_mac_list 中出现超过 1

我用它来插入新元素

c = new_mac_list.isin(mac_list['mac_address'])
c=list(c)
for i in range(len(c)):
if c[i]==False:
mac_list.append(new_mac_list[i],1)

但这是非常低效的方式,我想它可以通过只比较一次来完成。

最佳答案

这是初始数据框:

mac_list

mac_address frequency
0 20c9d0892feb 2
1 28e34789c4c2 1
2 3480b3d51d5f 1
3 4480ebb4e28c 1
4 4c60de5dad72 1
5 4ca56dab4550 1

以及新列表:

new_mac_list = ['20c9d0892feb', '3480b3d51d5f', '20c9d0892feb', '249cji39fj4g']

我首先将 mac_list 的索引设置为 mac_address:

mac_list = mac_list.set_index("mac_address")

然后计算新列表中的频率:

new_freq = pd.Series(new_mac_list).value_counts()

然后您可以在该系列上使用 add 方法:

res = mac_list["frequency"].add(new_freq, fill_value=0)

20c9d0892feb 4.0
249cji39fj4g 1.0
28e34789c4c2 1.0
3480b3d51d5f 2.0
4480ebb4e28c 1.0
4c60de5dad72 1.0
4ca56dab4550 1.0
dtype: float64

回到原来的格式:

mac_list = pd.DataFrame(res, columns = ["frequency"])
print(mac_list)

frequency
20c9d0892feb 4.0
249cji39fj4g 1.0
28e34789c4c2 1.0
3480b3d51d5f 2.0
4480ebb4e28c 1.0
4c60de5dad72 1.0
4ca56dab4550 1.0

关于python - 比较列表并在python中获取索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37482313/

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