pandas - 是否有一种方法可以根据条件将一个数据框列的值复制到另一个列中?

3

I have a dataframe that looks similar to this:

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个回答

3

让我们试试

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接