Skip to main content
 首页 » 编程设计

python之更改由列表组成的 df 列

2025年05月04日21think

我有一个数据框列“result”,它包含像 ["1","0"],["2","3"],["0","这样的值(字符串列表) 0"] 等,

我想做的是更改“结果”列的值。例如,如果列表的第一个元素大于第二个,则值为 1。如果第二个更大,则值为 2 和如果它们相等,则该值将为 0。

我怎样才能有效地做到这一点?

请您参考如下方法:

使用:

df = pd.DataFrame({'col':[["1","0"],["2","3"],["0","0"]]}) 
 
def check(x): 
    a, b = x 
    a = int(a) 
    b = int(b) 
    if a == b: 
        return 0 
    elif a > b: 
        return 1 
    else: 
        return 2 
 
df['new'] = [check(x) for x in df['col']] 
print (df) 
      col  new 
0  [1, 0]    1 
1  [2, 3]    2 
2  [0, 0]    0 

另一种解决方案:

df1 = pd.DataFrame(df['col'].values.tolist(), columns=['a','b']).astype(int) 
print (df1) 
   a  b 
0  1  0 
1  2  3 
2  0  0 
 
masks = [df1.a > df1.b, df1.a < df1.b] 
vals = [1,2] 
 
df['new'] = np.select(masks, vals, default=0) 
print (df) 
      col  new 
0  [1, 0]    1 
1  [2, 3]    2 
2  [0, 0]    0