【发布时间】:2021-01-26 22:48:24
【问题描述】:
我有一个 pandas 数据框和一个字典,如下所示。我想根据行索引出现在字典中的哪个列表在数据框中创建一个新列。
df = pd.DataFrame({
'a':['x', 'y', 'z'],
'b':[1, 2, 3],
'c':[10, 20, 30],
})
df = df.set_index('a')
mydict = {
'g1':['a', 'b', 'y'],
'g2':['x', 'k', 'l'],
'g3':['m', 'l', 'z'],
}
预期输出
b c g
a
x 1 10 g2
y 2 20 g1
z 3 30 g3
我什至不知道如何开始解决这个问题。可以使用它创建一个自定义函数和映射吗?但这是否足够高效?在我的实际用例中,“df”中可能有数十万行,“mydict”中可能有大约数百个键,每个列表将包含数万个项目。此外,我将主要处理整数而不是字符串,如此处所示。
【问题讨论】:
-
'l' 出现在该字典中不同键的列表中,那么在这种情况下会发生什么? -
这通常不会发生,但如果发生这种情况,“g2”或“g3”都可以。
标签: python pandas dictionary mapping