熊猫-是否可以根据条件将值从一个数据框列复制到另一列?

时间:2020-04-25 22:52:16

标签: python pandas dataframe

我有一个与此相似的数据框:

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

1 个答案:

答案 0 :(得分:3)

让我们尝试

df['C']=df.B.str.get('id').fillna(df.A)