Pandas:从设置复制警告到loc和我

2024-04-23 05:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做:

input1['Signature_Fixed'] = 'NONE' 
i = 0

for row in input1['Signature']:
  if (row == 'Competitor'):
    input1['Signature_Fixed'][i] = input1['brand'][i]
  else:
    input1['Signature_Fixed'][i] = input1['Signature'][i]
  i = i + 1

当我在1K行上做的时候,它工作,但是我有SettingWithCopyWarning当我在2M行上做的时候,它不工作。你知道吗

你能帮我解决这个问题吗?也许可以用loc/iloc来转换它?你知道吗


Tags: innoneforifelselocrowfixed
1条回答
网友
1楼 · 发布于 2024-04-23 05:30:33

input1['Signature_Fixed'][i]表示链式索引,在官方文档中是explicitly discouraged。尽可能避免。你知道吗

在这种情况下,可以通过使用^{}来避免for循环:

bool_mask = df['Signature'] == 'Competitor'
df['Signature_Fixed'] = df['Signature'].mask(bool_mask, df['brand'])

语法方面的想法是以矢量化方式对列进行操作,而不是对行循环进行操作。你知道吗

相关问题 更多 >