如何根据行值将pandas列除以整数列表

2024-09-25 08:41:30 发布

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

我有这个数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame({ 'CITY' : np.random.choice(['PHOENIX','ATLANTA','CHICAGO', 'MIAMI', 'DENVER'], 1000),
                    'DAY': np.random.choice(['Monday','Tuesday','Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], 1000),
                    'LOCATION' : np.random.choice(['Location1','Location2','Location3', 'Location4', 'Location5'], 1000),
                    'COUNT': np.random.randint(1, 700, size=1000)})

print(df)

         CITY  COUNT        DAY   LOCATION
0      DENVER    521  Wednesday  Location4
1       MIAMI    123   Saturday  Location3
2     ATLANTA    122  Wednesday  Location3
3      DENVER    363   Saturday  Location1
4     PHOENIX    656   Saturday  Location4
5     PHOENIX    369   Saturday  Location3
6       MIAMI    455    Tuesday  Location5

如何将count列除以基于位置的整数列表,例如

  • 如果位置1,则将计数除以13

  • 如果位置2,则将计数除以85

  • 如果位置3,则将计数除以42

  • 如果是locationx,则将COUNT除以intx。。。


Tags: importascountnprandompd计数choice
2条回答

有一种方法:

d = {'Location'+str(i): i*3 for i in range(1, 6)}

df['COUNT'] /= df['LOCATION'].map(d)

说明

  1. 定义“位置”和整数除数之间的映射。字典对这项任务很有效。在
  2. 将“COUNT”列除以通过此字典映射的“LOCATION”列。在

我对.map()不太熟悉,所以下面是我的方法(这可能在计算上要贵一些):

df['COUNT'] = None locations = {location: to_divide_by, location2: to_divide_by2} # and so on for index, row in df.iterrows(): df['COUNT'][index] = row['COUNT'] / locations[row['LOCATION']]

相关问题 更多 >