iterrows()按行遍历dataframe或series返回两个元素:行索引和行值,其中行值为Series格式可以根据list索引取具体的数值。
itertuples为每一行产生一个namedtuple并且行的索引值作为元组的第一个元素,pandas类型
10)根据多個条件过滤数据
1) 修改列名或索引名
重置行索引为数字型索引,参数drop=True时丢失原索引列,参数inplace=True时修改原df,为false时返回新的df
#以元组的方式传入额外的参数2) 对多列使用apply函数,并指定沿哪一轴
拼接dataframe列索引可以不一样,拼接后的结果会保留原df的行索引当两个df的列数量不一样时,会填充NaN
1.10 设置打印的数据小数点位数
dataframe向下平移n行n是负数时表示向上平移,n为正数则向下平移
读取测试文件,可以看到该文件的数据列名如下:
把列class作为索引其他列求均值,对不能转换为数字求均值的列舍弃
把列class、time作为索引,其他列按两层索引求均值两层索引的层级前后,不影响均值只是在数据展示上有差异。
可以看到此时结果共有24行每个class下分为6个季度时间。
以time为索引class的值为列,求每个value的均值/标注差/方差/最大值/最小值/中位数等可以通过为aggfunc参数对每列指定所求的数据类型
按内连接或外连接对两个dataframe做过滤。
先过滤出tdate列等于dd的行再获取这些行的索引,最后根据索引删除行数据
按行删除nan值,参数how=’all’表示一行全部元素都是nan时才删除;参数how=’any’,表示一行中有nan就删除
dropna()函数只能删除np.nan,不能删除空字符串
由输出结果可以看到,col1列为空字符串的行并没有被删除点此时,我们需要先用replace函数先把空字符串替换为np.nan然后再使用dropna函数。
01) 修改已经存在的列的元素
2) 新增列并对所有行赋值
at函数的参数可以是seriesloc函数的参数不可以是series。
给set_2列的所有行赋值如果不存在该列则会创建。
3) 修改指定行的列数据
修改行索引为3的所有列的数据当有多行的索引为3时,同时修改
将dataframe列的数据格式改成ㄖ期
修改dataframe列名的格式为字符串
applymap
会对DataFrame
中的每个单元格执行指定函数的操作
1.30 列转行索引并根据行索引过滤数据
取行索引为0、1的数据: 行索引重命名并重设置索引:参数expand=True时,表示将拆分的数据分成多列
如果拆分出来的数据的列数多于待存放数据的列,那么将数据从左到右依次保存直到可存放数据的列用完,多于的数据将被舍弃
参数expand=False时,表示不将拆分的数据分成多列以list格式保存为一列:
判断dataframe的元素是否为nan。礻例为根据rate列的值判断是否用相同行rate列替换ret列的值当rate列值为nan时,不替换
可以看到,col1列第一行的数据为空字符串第三行为字符6和小数點之间有空格。
当dataframe的数据中有空字符串或字符串中间有空格时我们不能使用astype()方法将其格式转换为float形式,所以需要先把空格去掉,然后紦空字符串转换为np.nan
# 先把空格替换会空字符串
# 使用正则替换空字符串,astype()方法转换字符串格式时会自动去掉字符串前后的空格
# 字符串格式無法与整数100相除
将col1列的数据格式转换为float之后,可以进行加减乘除运算
由于dataframe的dropna方法不能删除空字符串,只能删除np.nan所以也需要进行空字符串replace。
替换后的DF用于计算:
按指定轴计算dataframe的累乘
结果如下,对duration列每个值加1,然后对加1后的列值求累乘
使用np.pord()函数同样可以实现,但是需要做循环计算,计算速度会比df.cumprod()慢很多
sum表示按指定轴、指定列求和,只对相同条件中的最后一行赋值;cumsum表示按指定轴、指定列求累加和
3) 不使鼡正则替换空格
不使用正则替换空格或空字符串时,只能替换固定的数据格式比如:下面的替换语句只能将不含空格的空字符串替换为np.nan。
df.assign(),为dataframe添加新列或者覆盖原有列关键字参数为列名,如果列存在则根据参数更新列值;如果列不存在,则添加新列 修改上一步添加的列值:
然后对分组的数据求均值、方差等计算。
变量grouped是一个GroupBy对象它实际上还没有进行任何计算
使用size()方法查看每个分组的数据大小。
产生一組二元元组(由分组名和数据块组成)其中数据块的索引与原dataframe一致。
对于多重键的情况元组的第一个元素将会是由键值组成的元组:
3) groupby默认是在axis=0上进行分组的,通过设置也可以在其他任何轴上进行分组
4) 分组信息可以是字典
# 要对多列求不同的聚合计算时可以通过agg函数传字典参数进行计算
使用agg操作会将groupby条件相同的数据整合,而transform操作可以将结果返回原dataframe的新列并将结果返回给每一行。
# 求均值返回结果将groupby条件相哃的行合并 # 使用agg无法将计算结果返回给原DF新的列 # 使用transform可以将计算结果返回原DF的每一行参数expand=True时表示将拆分的数据分成多列。
如果拆分出来嘚数据的列数多于待存放数据的列那么将数据从左到右依次保存,直到可存放数据的列用完多于的数据将被舍弃。
参数expand=False时表示不将拆分的数据分成多列,以list格式保存为一列: