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

标签 python pandas dataframe

我有一个数据框列“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

关于python - 更改由列表组成的 df 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54417423/

相关文章:

r - 仅在 R 中行索引的特定范围内删除列中的重复值

python - pandas 数据框中整列的子字符串

dataframe - pyspark中有没有一种方法可以计算唯一值

python - Python OpenCV/PIL COLOR_BGR2RGB错误

python - 在 python 中抛出 pdb 警告时如何查看函数内的变量?

python - pandas - 列间条件的最佳行选择

python - Pandas 的平均时差

python - 如何将 Microsoft Azure 中的 pip 从 1.5.6 升级到 9.0.1?

python - 为什么列表中的第一个图没有绘制,但最后却有一个空图?

python - Pandas 数据帧处理中的关键错误