【问题标题】:how to map df by dict inside dict如何通过dict里面的dict映射df
【发布时间】:2020-12-07 17:32:36
【问题描述】:

我试图通过检查一个列的值是否在我的字典中来更改特定行的值。

这是我的数据

data={"col1":[np.nan,3,4,5,9,2,6],
"col2":[4,2,4,6,0,1,5],
"col3":[7,6,0,11,3,6,7],
"col4":[14,11,22,8,6,np.nan,9],
"col5":[0,5,7,3,8,2,9],
"type":["B","A","C","A","B","A","E"],
"number":["one","two","two","one","one","two","two"]}
df=pd.DataFrame.from_dict(data)

我的字典是

my_dict={"F":{"col1":2,"col2":44,"col3":0},"B":{"col1":0,"col2":11,"col3":4,"col4":50,"col5":np.nan}}

这就是我的尝试

my_dict={"F":{"col1":2,"col2":44,"col3":0},"B": 
{"col1":0,"col2":11,"col3":4,"col4":50,"col5":np.nan}}
col_list=df.columns[:-2]
m = df["type"].isin(my_dict)
df.loc[m, col_list] = df.loc[m, col_list].apply(lambda d: 
pd.Series.map(df["type"], my_dict))
df

但我进入每个单元格列表而不是一个值

我喜欢这个

data={"col1":[np.nan,0 ,4,5,0,2,6],
      "col2":[4 ,11,4,6, 11,1,5],
      "col3":[7 ,4 ,0,11,4,6,7],
      "col4":[14,50,22,8,50 ,np.nan,9],
      "col5":[0 ,0 ,7,3, 0  ,2,9],
"type":["B","A","C","A","B","A","E"],
"number":["one","two","two","one","one","two","two"]}
df=pd.DataFrame.from_dict(data)
df

【问题讨论】:

    标签: python pandas dictionary mapping pandas-loc


    【解决方案1】:

    我们可以试试update

    updatedf=pd.DataFrame(my_dict).T.reindex(df.type)
    updatedf.index=df.index
    df.update(updatedf)
    df
    Out[21]: 
       col1  col2  col3  col4  col5 type number
    0   0.0  11.0   4.0  50.0     0    B    one
    1   3.0   2.0   6.0  11.0     5    A    two
    2   4.0   4.0   0.0  22.0     7    C    two
    3   5.0   6.0  11.0   8.0     3    A    one
    4   0.0  11.0   4.0  50.0     8    B    one
    5   2.0   1.0   6.0   NaN     2    A    two
    6   6.0   5.0   7.0   9.0     9    E    two
    

    【讨论】:

    • 谢谢工作!!!,顺便问一下,你是如何在评论上打印 df 的?
    猜你喜欢
    • 2023-03-09
    • 2017-10-21
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多