【问题标题】:Compare dictionary key value to multi-value index将字典键值与多值索引进行比较
【发布时间】:2019-06-23 02:12:04
【问题描述】:

我想比较以下字典键:

{('F123', 1): 'R'}

到以下数据框的索引('F123', 1):

Connector Pin   Connector   Pin          Adj.         Color        
 F123      1        F123    1         [2, 6, 7]        NaN

如果字典键等于数据帧索引 ('F123', 1) 我想将字典值 ('R') 复制到与匹配索引关联的颜色列中。字典和数据框都有很多行,但为了解释起见,我只包括了每行。速度无关紧要,因为数据集不够大。

if(df.index == dict.key()):
    df['Color'] = dict.value()

我在语法上正在努力解决这个问题。

更新:我在下面尝试了这个(我知道这是错误的)。仍在尝试确定如何测试所有 dict。一个接一个的键,无需硬编码。

s = df.iterrows(pd.Series(dict.keys()))
df['Color'] = s

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    从字典中创建一个系列,然后将颜色列分配给它:

    In [11]: df
    Out[11]:
           Connector  Pin Connector.1 Pin.1 Adj.  Color
    F123 1      F123    1         [2,    6,   7]    NaN
    
    In [12]: s = pd.Series({('F123', 1): 'R'})
    
    In [13]: df["Color"] = s
    
    In [14]: df
    Out[14]:
           Connector  Pin Connector.1 Pin.1 Adj. Color
    F123 1      F123    1         [2,    6,   7]     R
    

    【讨论】:

    • 所以这行得通,但我试图为不同键/索引的整个列表做这件事。除了将字典键硬编码到系列中之外,是否可以进行某种迭代并从上到下进行?
    • @MaxB 如果您有更大的字典 {('F123', 1): 'R', ('F456', 2): 'G'} 这将正常工作,无需显式迭代。
    • 能否麻烦您看一下这个问题? Inserting list into a cell - why does loc ACTUALLY work here?我觉得你可以在这里称重。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多