【问题标题】:How to perform Conditional operations on Pandas columns? [closed]如何对 Pandas 列执行条件操作? [关闭]
【发布时间】:2021-03-20 01:33:02
【问题描述】:

我有一个数据框,我想对MAG 列执行条件操作。

MAG MagT
2   ML
3.5 mb
6   MC
5.6 mb
4   ML

如果 MagT 等于某个特定值,我必须执行操作并将值保存在那里。

if MagT=='ML' 
  MAG=MAG*5
  MagT=='mb'
if MagT=='MC'
 MAG=MAG*3
 MagT='ML'
.
.
.
else 
 MAG=MAG
 MagT=MagT

我该怎么做?

output
MAG MagT
10  mb
3.5 mb
18  ML
5.6 mb
4   ML

  
 

【问题讨论】:

  • Stack Overflow 并非旨在取代现有的文档和教程。请阅读有关 PANDAS 的可用教程;注意过滤和条件(where 子句)。

标签: python pandas conditional-statements


【解决方案1】:

试试这个:

import pandas as pd

df = pd.DataFrame([{'a':1, 'b': 2}, {'a':1, 'b': 2}, {'a':1, 'b': 3}])

df.loc[df['b'] == 3, 'a'] = df['a']*2

【讨论】:

    【解决方案2】:

    试试这个 -

    >>> import pandas as pd
    >>> df = pd.DataFrame({"MAG": [2,3.5,6,5.6,4], "MagT": ["ML","mb","MC","mb","ML"]})
    >>> df
       MAG MagT
    0  2.0   ML
    1  3.5   mb
    2  6.0   MC
    3  5.6   mb
    4  4.0   ML
    >>> df.loc[df["ML"],"MagT"] = df["MAG"]*5
    >>> df
        MAG MagT
    0  10.0   ML
    1   3.5   mb
    2   6.0   MC
    3   5.6   mb
    4  20.0   ML
    

    【讨论】:

      【解决方案3】:

      你可以使用 numpy.where

      import numpy as np
      a = np.arange(10)
      a
      # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
      np.where(a < 5, a, 10*a)
      # array([ 0,  1,  2,  3,  4, 50, 60, 70, 80, 90])
      
      https://numpy.org/doc/stable/reference/generated/numpy.where.html#numpy.where
      

      在你的情况下:

      df["MAG"] = np.where(df["MagT"]=='ML',df["MAG"]*5,df["MAG"])
      

      【讨论】:

        猜你喜欢
        • 2018-11-28
        • 1970-01-01
        • 1970-01-01
        • 2021-09-17
        • 2019-11-04
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多