Python 熊猫-是否有一种方法可以根据条件将值从一个数据帧列复制到另一个数据帧列?

Python 熊猫-是否有一种方法可以根据条件将值从一个数据帧列复制到另一个数据帧列?,python,pandas,dataframe,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

我有一个数据框,看起来类似于:

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]
但是它返回一个keyrerror:'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
让我们试试

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