【问题标题】:New pandas dataframe column using values from python dictionary使用 python 字典中的值的新熊猫数据框列
【发布时间】:2014-11-27 00:17:47
【问题描述】:

我有一个 pandas 数据框,例如:

colA      colB 
code1      num
code2      num
code3      num
code4      num
code5      num

我还有一个python字典,例如:

py_dict = {'code1': [val1, val2, val3, val4, val5], 'code2': [val1, val2, val3, val4, val5], 'code3': [val1, val2, val3, val4, val5], 'code4': [val1, val2, val3, val4, val5], 'code5': [val1, val2, val3, val4, val5]}

我想做的是在 pandas 数据框中创建一个新列,称为 colC,它使用 colA 中的键来匹配 py_dict 中的相应键/列表,并返回第三个列表值 val3。我已经尝试过 dataframe.from_dict() 和 dataframe.update() 但不确定如何正确索引字典。

【问题讨论】:

    标签: python dictionary pandas indexing dataframe


    【解决方案1】:

    首先从每个列表中创建一个只包含你想要的值的新字典:

    new_dict = {k: v[2] for k, v in py_dict.iteritems()}
    

    那么你可以使用Series.map

    df['new_col'] = df.colA.map(new_dict)
    

    【讨论】:

    • 在这个例子中对返回 v[2] 的字符串值有什么建议吗?
    • @user2920457:你什么意思?这个问题没有说明val2 是什么类型。如果它已经是一个字符串,则无需执行任何操作。如果要将v[2] 转换为字符串,请在new_dict 理解中执行str(v[2])
    • 你是对的。错误是为 map() 使用了错误的 df 列名,我的错。
    猜你喜欢
    • 2015-06-02
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2021-11-10
    • 2015-06-23
    • 2022-08-15
    • 1970-01-01
    相关资源
    最近更新 更多