【问题标题】:pandas - add new column to dataframe from dictionary [duplicate]pandas - 从字典中向数据框添加新列[重复]
【发布时间】:2015-06-29 22:58:19
【问题描述】:

我想向这样的数据框添加“D”列:

U,L
111,en
112,en
112,es
113,es
113,ja
113,zh
114,es

基于以下词典:

d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}

因此生成的数据框显示为:

U,L,D
111,en,en
112,en,en
112,es,en
113,es,es
113,ja,es
113,zh,es
114,es,es

到目前为止,我尝试了pd.join() 方法,但我无法弄清楚它如何与字典一起使用。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    调用map 并传递字典,这将执行查找并返回该键的关联值:

    In [248]:
    
    d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}
    df['D'] = df['U'].map(d)
    df
    Out[248]:
         U   L   D
    0  111  en  en
    1  112  en  en
    2  112  es  en
    3  113  es  es
    4  113  ja  es
    5  113  zh  es
    6  114  es  es
    

    【讨论】:

    • 正是我需要做的。谢谢你,好心的先生!
    【解决方案2】:

    当我尝试使用 index.map() 时,EdChum 的解决方案出现 TypeError: 'dict' object is not callable 错误...而且我还没有找到将索引作为 Series 的方法。

    所以我找到了另一个解决这个问题的方法,首先从 dict 对象创建一个 Series 对象。

    new_d = pd.Series(d)
    

    然后使用您喜欢的列执行 pd.join。这可能会有所帮助。

    【讨论】:

      【解决方案3】:

      这是一个更简单的方法,也应该很好用:

      df["D"] = pd.Series(d)

      注意:dict 键需要在 DataFrame 索引中。

      【讨论】:

        猜你喜欢
        • 2022-12-18
        • 2020-02-24
        • 2023-03-14
        • 1970-01-01
        • 2017-06-07
        • 2017-04-22
        • 2019-01-02
        • 2021-01-17
        • 1970-01-01
        相关资源
        最近更新 更多