умножение плавающих столбцов в пандах занимает слишком много времени - PullRequest
1 голос
/ 11 июня 2019

Доброго всем, У меня 460 000 строк DataFrame с 15 столбцами. Я пытаюсь присвоить одному столбцу произведение двух других код такой

df[df.colx == 'S']['prd'] = df['col1']*df['col2']

prd, col1 и col2 имеют тип данных float64. Я выполнил много операций с другими столбцами без проблем, включая разницу в дате, и они почти мгновенно выполняются. если я попытаюсь

df['prd'] =  df['col1']*df['col2']

исполнение супер быстрое. проблема возникает, когда я пытаюсь применить операцию к подмножеству DataFrame Кто-то может мне помочь и объяснить, как я могу уменьшить время выполнения? Большое спасибо!

UPDATE: если если

df2 = pd.DataFrame(df[df.colx=='S'])

, а затем

df2['prd'] =  df['col1']*df['col2']

все еще супер медленный ......... о, это возможно? df2 должен быть новым DataFrame .......

1 Ответ

1 голос
/ 11 июня 2019

Попробуйте разделить операции:

df2 = df[df.colx == 'S']
df2['prd'] = df2['col1]*df2['col2']

или если df.colx == 'S' является для вас условием, вы можете выполнить:

df['prd'] = numpy.where(df['prod'] == 'S', df['col1']*df['col2'], 'Do something else')

просто замените «Сделать что-то еще» другим логическим вариантом, что следует сделать, если df.colx != 'S'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...