2. 将日期划分为上、中、下旬并作为新列

1. np.where是好理解好用的函数,可以当if else的用,当某列满足一个条件时取某列的值,否则取其他列的值。像excel里的if函数,可以嵌套使用。参考 python条件赋值 numpy.where() 用法详解

2.直接用df[条件语句][列名]也可以选出符合条件的列值,如:

df['新列名']=df[(df['列A']<=3)|(df['列B'].isin(['Chicago','Boston']))]['列C']

将符合(df['列A']<=3)|(df['列B']=='Chicago')的列C值赋给新列。

也可以直接用几个条件语句的真假结果赋值给一个新列,如:

df['新列名']=(df['列A']<=3)|(df['列B'].isin(['Chicago','Boston']))

也可以用loc函数。

3.df.max也是个好用的函数,可以取同一行几列值中最大的,也可以取同一列中最大的。

1.按col_night,col_day,col_whole三列的值生成标志字段rs_flag;当col_whole>=50时取它自己,否则取其他两个的最大值为新值字段rs_value

用loc函数;每个条件语句要用();用df.max函数;对于赋值不来自原有字段的,先赋值为数字,便于后续计算,再按条件修改

#增加字段rs_flag, rs_value
#只要col_night,col_day,col_whole有一个达到条件就记为1,下面的条件语句必须加()
data['rs_flag' ] = 0
data.loc[ (data[col_night]>=30) | (data[col_day]>=30) | (data[col_whole]>=50) , 'rs_flag' ] = 1
#rs_value取同一行这几列的最大值
#这个又犯了将不同条件放在一起比较的错误,大于30的和大于50的条件不同,可能取出的最大值并不一定大于50  data.loc[ (data[col_night]>=30) | (data[col_day]>=30) | (data[col_whole]>=50) , 'rs_value']=data[[col_night,col_day,col_whole]].max(axis=1)
            data['rs_value']=np.where(data[col_whole]>=50, data[col_whole], np.where((data[col_night]>=30) | (data[col_day]>=30),data[[col_night,col_day]].max(axis=1),0))

2.根据日dd字段生成旬字段dd_xun,类似于SQL的case when;if else嵌套使用; 用df.apply函数,用lambda函数,注意语法

#增加dd_xun字段
data['dd_xun'] = data['dd'].apply(lambda x: '上旬' if x<=10 else '中旬' if x<=20 else '下旬')
需求从excel读取数据用DataFrame存储,1. 逐行处理,当指定多列的值满足一定条件时,取这几列的最大值作为该行的新列值.2. 将日期划分为上、中、下旬并作为新列代码1.按col_night,col_day,col_whole三列的值生成标志字段rs_flag,并取它们的最大值为新值字段rs_value用loc函数;每个条件语句要用();用df.max函数;对于赋值不来自原有字段的,先赋值为数字,便于后续计算,再按条件修改#增加字段rs_flag,rs_value. df = pd.DataFrame({'A':[1,0,-1]}) df['B'] = df['A'].map(lambda a : 1 if a>0 else 0) #根据列A新增列B,A中大于0的 为1,否则为0
Python 学习笔记 – Pyhthon pandas 如何基于 一列 多列 运算并 生成 新的列 在 数据 处理中,通过前面几列的运算 生成 一个 新列 。 最常见的例子是计算成绩 : ) 1.eval() eval是最直接的 举个栗子: 我们这里就用最常见需要增加列的情景之一 成绩统计~ 已经有每一门学科的成绩,需要在最后新增 一列 总分: df = pd.DataFrame({'math':[89,78,83],...
DataFrame根据指定范围的元素提取已有列 数据 中包含元素的 数据 形成 一列 1 问题解释2 测试 数据 3 测试代码3.1 已有的 数据 3.2 指定范围的 数据 3.3 匹配 数据 4 结果验证 手动反爬虫,禁止转载:原博地址 https://blog.csdn.net/lys_828/article/details/117573985 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息 1 问题解释 题目读完可能不是很好理解这个问题,那么就列举 一个 示例 数据
mport unicodedata x = input("请输入 一个 字符") print(x.isdecimal())#检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。 print(x.isalnum())#isalnum 判断 是否数字和字母的组合,如果包含空格就报false print(x.isalpha())#用isalpha 判断 是否字母,不区分大小写 print(x.isdigit())#用isdigit函数 判断 是否数字 ———————————————— 版权声明:本文为CSDN博主
3、根据现有列计算 生成 新的列 dataframe 根据某列的 生成 新的列 df2[‘是否逾期’]=df2.apply(lambda x:0 if x.应付日期>today_time else 1,axis=1) df2[‘是否到期90天’]=(today_time -