熊猫:根据单独的列的值更新多个列和行

MathiasRa

我正在尝试创建一个代码,以根据ID列的值尽快更新大量的熊猫值。我正在使用atm的代码在一个ID_column的基础上同时插入多行,但无法同时插入多列+行。

下面的代码是一个简化示例,该示例根据列名ID的值更新2列(值1和值2)。

id_list = [24,26,28] 
value1_list  =[100,200,300]
value2_list  =[125,175,165]

df.loc[df['id'].isin(id_list), 'value1'] = value1_list 
df.loc[df['id'].isin(id_list), 'value2'] = value2_list 

我理想情况下使用的代码将像这样工作:

df.loc[df['id'].isin(id_list), ['value1','value2']] = [value1_list,value2_list]

意味着列value1和column value2将同时更新。这可行吗?

pp

您可以通过构建单个NumPy数组np.vstack,然后将其分配给多列:

import numpy as np

mask = df['id'].isin(id_list)
value_array = np.vstack((value1_list, value2_list)).T
df.loc[mask, ['value1', 'value2']] = value_array

print(df)
#    id  value1  value2
# 0  24     100     125
# 1  26     200     175
# 2  28     300     165
# 3  30       4       8

或者,您可以zip输入列表:

df.loc[mask, ['value1', 'value2']] = list(zip(*(value1_list,value2_list)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章