用比较琐碎的时间整理经常用的东西
import pandas as pd
import numpy as np
import functools
df = pd.DataFrame( {'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]});
df.loc[df.AAA >= 5,'BBB'] = -1
满足AAA列中>=5,让BBB列该行的值替换成-1,达到如下效果;
满足AAA列中>=5,让BBB,CCC列该行的值替换成555,满足AAA列中<5,让BBB,CCC列该行的值替换成2000这里面分两步的:
df.loc[df.AAA >= 5,['BBB','CCC']] = 555
df.loc[df.AAA < 5,['BBB','CCC']] = 2000
df['logic'] = np.where(df['AAA'] > 5,'high','low');
联合numpy里面的where 将AAA中的>=5,是的变成high,小于的变成low,并且复制到给logic
注:np.where(condition,x,y) 是三元运算符,conditon条件成立则结果为x,否则为y
newseries = df.loc[(df['BBB'] >=555) & (df['logic'] =="low"), 'AAA'];
newseries
选出了满足BBB大于555且logic列是low的AAA列,结果如上
df.loc[(df['BBB'] < 25) & (df['CCC'] >= -40), 'AAA']=-1
将满足条件的AAA给它赋值-1,最好这种方法用df.copy以防数据过程被改,后面又要会重新跑比较麻烦。
df["AAA"]=df["AAA"].map(lambda x : "low" if x<=6 else "high")
df
用lambda 或者filter 然后也是一样的效果,不过这个跑起来有点慢,毕竟遍历整列或者其它列组合