散乱11

it2022-05-05  158

Python列表解析配合if else: 用习惯列表解析之后会觉得超级酷,所以在尝试使用列表解析,把循环什么的写在一行里面。使用if的时候什么时候必须要有else,什么时候可以没有else一直没搞明白,直到今天!待我缓缓道来:

列表解析总共有两种形式:

1. [i for i in range(k) if condition]:此时if起条件判断作用,满足条件的,将被返回成为最终生成的列表的一员。 例: [i for i in range(1,10) if i>4 and i<8] Out[43]: [5, 6, 7]

2. [i if condition else exp for exp]:此时if...else被用来赋值,满足条件的i以及else被用来生成最终的列表。 例: [i if i>3 else 100 for i in range(1,10)] Out[44]: [100, 100, 100, 4, 5, 6, 7, 8, 9]

[i if (i>2 and i<10) else 'error' for i in range(20) if i%2!=0] Out[3]: ['error', 3, 5, 7, 9, 'error', 'error', 'error', 'error', 'error']

 

#创建新文件夹 import os os.makedirs(r'd:\Users\zhanggl21\Desktop\新文件夹')                             #单个文件夹 os.makedirs(r'd:\Users\zhanggl21\Desktop\新文件夹1\新文件夹2\我是最后一层')     #多层文件夹  

 

DataFrame拼接之concat: concat纵向拼接DataFrame: print(pd.concat([df1,DF]))   #concat可以自动查找相同columns的名字索引进行列对齐

concat横向拼接DataFrame: print(pd.concat([df1,df2,df3],axis=1))   #axis参数1为横向操作,0为纵向操作

 

DataFrame拼接之append: df1.append([df2,df3])

 

 

pandas库的pd.merge函数参数详解:

参数如下:

left: 拼接的左侧DataFrame对象 right: 拼接的右侧DataFrame对象 on: 要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。 如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。 left_on:左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。 right_on: 左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。 left_index: 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。 right_index: 与left_index功能相似。 how: One of ‘left’, ‘right’, ‘outer’, ‘inner’.  默认inner。 inner是取交集,outer取并集。比如left:[‘A’,‘B’,‘C’];right[’'A,‘C’,‘D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right 中没有匹配到,则会丢失。 'outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。 sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。 suffixes: 用于重叠列的字符串后缀元组。 默认为(‘x’,’ y’)。 copy: 始终从传递的DataFrame对象复制数据(默认为True),即使不需要重建索引也是如此。 indicator:将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。 _merge是分类类型,并且对于其合并键仅出现在“左”DataFrame中的观察值,取得值为left_only,对于其合并键仅出现在“右”DataFrame中的观察值为right_only,并且如果在两者中都找到观察点的合并键,则为left_only。

 

# 将数据类型转换为日期类型 data_train['date'] = pd.to_datetime(data_train['date'])

 

 

布尔索引条件设置:

dfqy=denglu[(denglu.区域=='长宁区')|(denglu.区域=='闵行区')|(denglu.区域=='徐汇区')|(denglu.区域=='静安区')]

ershi=denglu.loc[(denglu.租售类型=='二手房')&(denglu.户型.str.contains('2室')),['用户ID','户型']]

not_call_yet=phone_num[~phone_num.PHONE.isin(april_call.客户信息.unique())]

 

 

删除DataFrame里某列包含NA值的记录:

#查看虚拟号码有无缺失值,有缺失值记录删掉 df=df.dropna(subset=['被叫号码'])

 

 

#增加新列"拨打完成率" df_result['拨打完成率']=df_result['已经拨打的号码数']/df_result['所有号码的个数']  

 

#将分机号替换为大区名称 df_result=df_result.rename(index={18121493732:'余坤',\                                   1812141:'陈',\                                   18121439:'吕',\                                   181935:'李',\                                   1812125:'新',\                                   18193614:'海'})

 

 


最新回复(0)