这似乎应该是一个常见的用例,但我没有找到任何好的指导。我有一个可行的解决方案,但我更愿意使用向量化查找而不是使用Pandas的
以下是我的示例:
apply()
函数。以下是我的示例:
import pandas as pd
example_dict = {
"category1":{
"field1": 0.0,
"filed2": 5.0},
"category2":{
"field1": 5.0,
"field2": 8.0}}
d = {"ids": range(10),
"category": ["category1" if x % 2 == 0 else "category2" for x in range(10)]}
df = pd.DataFrame(d)
# The operation I am trying to vectorize
df['category_data'] = df.apply(lambda row: example_dict[row['category']], axis=1)
在最后一行,你可以看到我使用了apply()
函数来执行字典查找。我的直觉告诉我应该有一种向量化的方法。我可能错了,但我也想知道。我经常遇到需要在字典中查找信息并将其添加为DataFrame
列的情况。
field1
和field2
列,而不是一个category_data
列,每个列都存储浮点数。如果您需要根据字典中的值选择行,则这可能会带来显着的性能优势。 - unutbu