Python 如何对列执行条件操作?
我有一个数据帧,我想对Python 如何对列执行条件操作?,python,pandas,conditional-statements,Python,Pandas,Conditional Statements,我有一个数据帧,我想对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
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
试试这个:
将熊猫作为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
试试这个-
>>> 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
你可以使用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
堆栈溢出不是为了替换现有的文档和教程。请阅读有关熊猫的可用教程;注意过滤和条件句(where子句)。
df["MAG"] = np.where(df["MagT"]=='ML',df["MAG"]*5,df["MAG"])