我有一个与此相似的数据框:
A B
55 {'created by':Max,'id':22}
38 {}
44 {'created by':John,'id':11}
我想创建一个新列,其中包含来自列B的'id'值,但是如果字典为空,则应从列A复制该整数。
我尝试过
df['C'] = [df.A[x] if df.B[x] == {} else df.B[x]['id'] for x in df]
但是它返回KeyError:'id',我相信这是说没有'id'密钥? if语句不能解决这个问题吗?
我也尝试过
df['C'] = [df.A if df.B[x] == {} else df.B[x]['id'] for x in df]
但是将所有列A作为对象复制到列C中的每个单元格中
预期结果:
A B C
55 {'created by':Max,'id':22} 22
38 {} 38
44 {'created by': John,'id':11} 11
答案 0 :(得分:3)
让我们尝试
df['C']=df.B.str.get('id').fillna(df.A)