【问题标题】:Assigning content of a pandas DataFrame cell based on some condition without using loops根据某些条件分配 Pandas DataFrame 单元格的内容而不使用循环
【发布时间】:2016-05-17 07:30:17
【问题描述】:

我有一个带有以下内容的 pandas DataFrame df:

Serial N       voltage       current
   B              10            nan
   B              10            nan
   C              12            nan
   D              40            nan
   .               .             .
   AB             12            nan

我还有以下字典,其中包含以下当前值(我的关键是序列号):

my_dict={A:0.6,B:0.2, ...,AB:0.2}

我想根据字典将字典的内容存储到 dataFrame 列“current”中。我可以在 dataFrame df 中有多个具有相同值的序列号。如果可能的话,我想这样做而不使用循环。我试过这个:

for k,v in my_dict.items():
   if df["Serial N"]==k:           
       df["current"]=v

但它不起作用,因为我没有满足条件的行的位置(我可以有多个具有相同值的序列号;例如:序列 N 列中的 B)。没有循环我怎么能做到这一点?

【问题讨论】:

    标签: python python-2.7 dictionary pandas dataframe


    【解决方案1】:

    你可以使用map:

    print df
      Serial N  voltage  current
    0        B       10      NaN
    1        B       10      NaN
    2        C       12      NaN
    3        D       40      NaN
    4       AB       12      NaN
    
    my_dict={"A":0.6,"B":0.2,"AB":0.2}
    print my_dict
    {'A': 0.6, 'B': 0.2, 'AB': 0.2}
    
    df['current'] =  df['Serial N'].map(my_dict)
    print df
      Serial N  voltage  current
    0        B       10      0.2
    1        B       10      0.2
    2        C       12      NaN
    3        D       40      NaN
    4       AB       12      0.2
    

    【讨论】:

    • 我有一个担心,如果我有第二个我想匹配的字典,初始数据帧的值仍然是 nan 即使很难他们有不同的序列号
    • 你能添加一些关于第二本词典的例子吗?如果您需要快速回答,您可以创建新问题吗?如果不是很快,你可以修改这个问题,我明天会尝试找到解决方案,因为我现在很忙。谢谢。
    • 谢谢。我通过遍历字典字典并从中制作单个字典找到了一个快速的解决方案。然后我应用了你的解决方案。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 2017-10-29
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 2022-12-15
    • 1970-01-01
    相关资源
    最近更新 更多