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 -