【问题标题】:matching panda dataframe and list匹配熊猫数据框和列表
【发布时间】:2021-08-08 18:31:51
【问题描述】:

我有一个数据框 df 如下

 Number   PT
     
    5        AA
    
    64       BB
  
    7        CC

然后是另一个对象列表,

myList = [{'label': 'AA', 'value': 'AA', 'group': 'A'}, {'label': 'BB', 'value': 'BB', 'group': 'B'}]

我希望每个 PT 都有列表中的关联组(如果可用),所以结果应该是这样的

    Number       PT    group
         
        5        AA    A
        
        64        BB    B
      
        7        CC    NOT_MATCHED
        

【问题讨论】:

  • 如何从myList 创建第二个数据帧,然后在 PT 上合并并用“NOT_MATCHED”填充 na

标签: python pandas list dataframe matching


【解决方案1】:
d = {'Number': [5, 64, 7], 'PT': ["AA", "BB", "CC"]}
df = pd.DataFrame(data=d)

myList = [{'label': 'AA', 'value': 'AA', 'group': 'A'}, {'label': 'BB', 'value': 'BB', 'group': 'B'}]    

for i, row in df.iterrows():
  for item in myList:
    if item['value'] == df['PT'][i]:
      df.at[i,'Group'] = item['group']
      break
    else:
      df.at[i,'Group'] = "NOT_MATCHED"

【讨论】:

  • 我希望有一种更直接/优雅的方式,而不是在 df 行上手动循环
【解决方案2】:

试一试:

df['group'] = df.PT.map({tuple(i.values())[0]: tuple(i.values())[
                        2] for i in myList}).fillna('Not Matched')

【讨论】:

  • 这行不通,该组将有PT标签而不是组标签
猜你喜欢
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 2020-10-11
  • 2019-08-20
相关资源
最近更新 更多