Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据行值将列除以整数列表_Python_Pandas_Dataframe - Fatal编程技术网

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

Python 如何根据行值将列除以整数列表,python,pandas,dataframe,Python,Pandas,Dataframe,我有这个数据框: 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

我有这个数据框:

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
如何根据位置(例如)将计数列除以整数列表

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

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

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

  • 如果位置X,则将计数除以intx

    • 这里有一种方法:

      d = {'Location'+str(i): i*3 for i in range(1, 6)}
      
      df['COUNT'] /= df['LOCATION'].map(d)
      
      解释

    • 定义“位置”和整数除数之间的映射。字典对这项工作很有效
    • 将“计数”列除以通过此字典映射的“位置”列
    • 这里有一个方法:

      d = {'Location'+str(i): i*3 for i in range(1, 6)}
      
      df['COUNT'] /= df['LOCATION'].map(d)
      
      解释

    • 定义“位置”和整数除数之间的映射。字典对这项工作很有效
    • 将“计数”列除以通过此字典映射的“位置”列

    • 我对
      .map()
      不是很熟悉,所以我的方法是这样的(计算成本可能会高一点):

      df['COUNT']=None
      地点={location:to_divide_by,location2:to_divide_by 2}等等
      对于索引,df.iterrows()中的行:
      
      df['COUNT'][index]=row['COUNT']/locations[row['LOCATION']]
      我不太熟悉
      .map()

      df['COUNT']=None
      地点={location:to_divide_by,location2:to_divide_by 2}等等
      对于索引,df.iterrows()中的行:
      
      df['COUNT'][index]=row['COUNT']/locations[row['LOCATION']]

      哦,对不起,整数并不总是3的倍数。实际上我有一个6个位置的列表,需要除以静态整数。有什么方法可以手动填充列表吗?@calculation您可以提供任何您想要的词典。只要值是您想要除以的值,键是您可以在
      LOCATION
      列中找到的东西。jpp必须提供一个例子,因为你没有。这个答案正是你所需要的。如果您需要更多详细信息,我建议您在问题中添加更多信息。@演算,正如pir所解释的,您可以提供任何您喜欢的映射。如果你有你不知道如何实现的特定逻辑,那么请随意提问。我现在知道了,我不知道那是一本字典。按预期工作。谢谢抱歉,整数不一定是3的倍数。实际上我有一个6个位置的列表,需要除以静态整数。有什么方法可以手动填充列表吗?@calculation您可以提供任何您想要的词典。只要值是您想要除以的值,键是您可以在
      LOCATION
      列中找到的东西。jpp必须提供一个例子,因为你没有。这个答案正是你所需要的。如果您需要更多详细信息,我建议您在问题中添加更多信息。@演算,正如pir所解释的,您可以提供任何您喜欢的映射。如果你有你不知道如何实现的特定逻辑,那么请随意提问。我现在知道了,我不知道那是一本字典。按预期工作。谢谢,你为什么不给出一个完整的例子来说明你想除以什么?你为什么不给出一个完整的例子来说明你想除以什么?