dataframe放在字典循环里面无效

为啥我下面的字典循环语句跑出来的TA 列都是None, 但是拆开来跑就可以得到想要的结果呢?

这段得到是TA column是None:

study_list_by_ta = {"CV_MED":["Axxxxxx","Byyyyyy"],"I&I" : ["cxxxxxxx"]}

for key, values in study_list_by_ta.items():
    signal_history_cal1["TA"] = signal_history_cal1['Study No.'].apply(lambda x: key if x in values else None)

但是这段得到的就是想要的结果,比如CV_MED

aaa = study_list_by_ta["CV_MED"]
signal_history_cal1["TA"] = signal_history_cal1['Study No.'].apply(lambda x: "CV_MED" if x in aaa else None)
阅读 1.6k
1 个回答

你的逻辑错了,你遍历的是字典 每循环一次都会使整个 dataframe 都更新一次,所以你得到的结果实际上是字典里最一个被遍历的数据。

我的写法是 先写一个查找 key 的函数

def find_key(x):
    for key, values in study_list_by_ta.items():
        if x in values:
            return key
    return None

再将函数代入

signal_history_cal1["TA"] = signal_history_cal1['Study No.'].apply(find_key)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题