gpt4 book ai didi

python - 将 pandas DataFrame 行与键/值对的字典匹配

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

我想做以下事情:

df.loc[(df["first_name"] == "joko") & (df["last_name"] == "widodo"), "are_you_joko"]

但是,没有在 (df["first_name"] == "joko") & (df["last_name"] == "widodo") 行中明确提供列名和值.相反,我想提供键/值对的字典,例如 {"first_name": "joko", "last_name": "widodo"}。另外,我想以最快的方式完成这项工作。我目前正在使用以下内容。

tf_df = pd.DataFrame([df[k] == v for k, v in record_dict.iteritems()]).all()
df.loc[:, "are_you_joko"] = tf_df

record_dict{"first_name": "joko", "last_name": "widodo"}。如果有人知道任何更快的事情,我很感兴趣。谢谢!

最佳答案

如果您的 df 很大,创建一个新的 DataFrame 似乎会花费时间和内存。我试过这样的东西,当 len(df) = 100000 时,它比你在我机器上的快 500 倍以上。如果你的 df 很小,我想没有区别。

In [1]:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(3, size=(100000,5)), columns=list('ABCDE'))

record_dict = dict(A=1, B=2, C=1, D=2, E=1)
In [2]:

%%timeit
tf_df = pd.DataFrame([df[k] == v for k, v in record_dict.iteritems()]).all()
1 loops, best of 3: 2.34 s per loop
In [3]:

%%timeit
msk = None
for k, v in record_dict.iteritems():
if msk is None:
msk = df[k] == v
else:
msk = msk & (df[k] == v)
100 loops, best of 3: 4.14 ms per loop

关于python - 将 pandas DataFrame 行与键/值对的字典匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33978664/

24 4 0
文章推荐: node.js - 通过脚本管理 NPM 包
文章推荐: c - 有多少单词使 memcpy 值得?
文章推荐: javascript - 使用 NodeJs 创建邮件服务
文章推荐: html -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com