pandas 私货

import numpy as np
import pandas as pd


df = pd.DataFrame({'col1':[np.NaN,2,3,4],'col2':[2,np.NaN,4,5],'col3':[3,4,5,6]})
df.columns = [['col','col','col'],['col1','col2','col3']] # 重置列名,多重列名
'''
   col          
  col1 col2 col3
0    1    2    3
1    2    3    4
2    3    4    5
3    4    5    6
'''
# df = pd.DataFrame({'col1':[np.NaN,2,3,4],'col2':[2,3,4,5],'col3':[3,4,5,6]})

res = df['col']['col1'].isna().any()  # 判断某列是否全部(.all())为空,或者部分为空
'''
False
'''

def apply1(data,var):
    return 'a'
result = df.groupby([('col','col1')]).apply(apply1,'xxx') # 根据某列分组(多重列名分组),括号里为多重索引的列名
df1 = pd.DataFrame(result,columns=[['value'],['value1']])    # apply返回一个值,出来后可再把result  pd.DataFrame化,
                                                            # 如果给一个columns,就是给这个值赋一个列名,当然也可给一个
                                                            # 多重列名([[第一行].[第二行]])
                                                            # 如果用apply方法,一定要注意返回值,控制好返回值的类型,实在不行就
                                                            # DataFrame吧,别问我为什么!!!
'''
            value
(col, col1)      
1               a
2               a
3               a
4               a
'''
df1.reset_index(inplace=True)  # 重置索引,groupby会把传入的列名作为索引,如果要输出格式好看一点,一定要reset_index
'''
   (col, col1) value
0            1     a
1            2     a
2            3     a
3            4     a
'''
# agg暂不讨论,暂时还没怎么用到

df[~df['col']['col1'].isin(['2'])] # isin里,如果是str.isnumeric()为True,就不用把参数强转为int
'''
   col          
  col1 col2 col3
0    1    2    3
2    3    4    5
3    4    5    6
'''
print(df)

df['col']['col1']+df['col']['col2'] # np.NaN +-*/ int = np.NaN
'''
0    NaN
1    NaN
2    7.0
3    9.0
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值