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

我正在尝试创建一个代码,该代码可以根据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将同时更新。这可行吗?

参考方案

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

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)))

熊猫:从SettingWithCopyWarning到loc和iloc - python

我试着做:input1['Signature_Fixed'] = 'NONE' i = 0 for row in input1['Signature']: if (row == 'Competitor'): input1['Signature_Fixed'][…

熊猫-保留与其他数据框中两个单元格匹配的行 - python

我有一个像这样的数据框df: trial id run rt acc 0 1 1 1 0.941836 1 1 2 1 1 0.913791 1 2 3 1 1 0.128986 1 3 4 1 1 0.155720 0 4 1 1 2 0.414175 0 5 2 1 2 0.699326 1 6 3 1 2 0.781877 1 7 4 1 2 0.55…

熊猫:根据其他列的值有条件地替换值 - python

我有一个数据框(df),如下所示: environment event time 2017-04-28 13:08:22 NaN add_rd 2017-04-28 08:58:40 NaN add_rd 2017-05-03 07:59:35 test add_env 2017-05-03 08:05:14 prod add_env ... 现在,我的目标…

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…