python - 根据其他列和字典创建一个新列

标签 python pandas dictionary dataframe

假设我有一个至少包含两列 col1 和 col2 的数据框。我还有一本字典,其键由 col1 中的值组成。 col2.

import pandas as pd
dict_of_dicts = {'x0': {'y0':1, 'y1':2, 'y2':3}, 'x1': {'y0':0, 'y1':0,    'y2':1}, 'x2': {'y0':2, 'y1':1, 'y2':3}} 
df = pd.DataFrame( {'col1': ['x1', 'x2', 'x2'], 'col2': ['y0', 'y1', 'y0']} )
print(df)
  col1 col2
0   x1   y0
1   x2   y1
2   x2   y0

现在我想创建第三列,其中包含我的字典的值,其中的键由相应行中的 col1 和 col2 给出。有点像

df['col3'] = dict_of_dicts[df['col1']][df['col2']].

结果应该是这样的:

  col1 col2  col3
0   x1   y0     0
1   x2   y1     1
2   x2   y0     2

它应该类似于“ map ”,如此处解释Adding a new pandas column with mapped value from a dictionary

但我依赖两列。有人可以帮我吗?

顺便说一下:我实际上不必使用字典中的字典(如刚才所述)。我还可以使用一个表(数据框),其中一组键作为数据框的索引集,另一组键作为列名。但在这里我也不知道如何访问由 col1 和 col2 中的值指定的特定“单元格”。

我希望我的问题很清楚。

谢谢你,娜佳

最佳答案

我觉得简单pandas.DataFrame.apply使用匿名函数应该可以正常工作:

df.apply(lambda x: dict_of_dicts[x.col1][x.col2], axis=1)

关于python - 根据其他列和字典创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42766885/

相关文章:

python - 有没有办法在给定 Rect 对象列表的情况下检查 MOUSBUTTONDOWN 事件?

python - 更改 DataFrame 中函数的值

c# - Dictionary.Keys.List()[i] 是否对应于 Dictionary.Values.ToList()[i]?

python - 使用循环和字典进行动态计数的大多数 pythonic 方式

python - JSON字典重复自动消除

python - Ctypes 方法中的内存泄漏

python - 快速切片数据集并存储在新的数据框中?

python - 如何有效地重新索引 csv 数据?

python - 在 cassandra DB 中插入字典

python - 有什么方法可以在 Python pandas 中获取标签编码器的映射?