pandas入门学习

#两列互换

In [35]: cond = df.a > df.b 

In [36]: df.loc[cond, ['a', 'b']] = df.loc[cond, ['b', 'a']].values 

In [37]: df 
Out[37]: 
    a b 
0 1 3 
1 2 4 
2 0 2 
3 1 6 

https://www.cnblogs.com/oklizz/p/11766788.html  pandas速查手册

https://www.pypandas.cn/docs/getting_started/tutorials.html#%E5%AE%98%E6%96%B9%E6%8C%87%E5%8D%97    官方指南中文版

方法目录

 panda 速查手册

 

df.drop(df.columns[0:3], axis=1, inplace=True) # 删除前3列

df.drop(df.index[0:3], inplace=True) # 删除前3行

df[df.isna().values] 现实空值

df.loc[:,(df != 0).all(axis='index')]     去除全为0的列

df[df[2].str.len()==11]        查找手机号是11位的人

dfmeiwen[4].value_counts()         计数出现次数

df[2]=df[2].astype('str') df.dropna(thresh=10) 删除空值 超过十个空值才删 ANY 只要有就删除

df.drop_duplicates(["k1"])    删除重复行    默认保留第一行
df.drop_duplicates(["k1","k2"], take_last=True)


df=df.reindex([x for x in range(20)]) 重新设置索引 索引值如果多 就生成NAN 返回一个DATAFRAME 所以要用df再接受一下

df.loc[(df[7]>36)&df[3].str.contains('平顶山')].sort_values(by=7)            df.loc[lambda df:(df[7]>36)&df[3].str.contains('平顶山')]        

    def ceshi(x):
          return x[7]>36&df[3].str.contains('平顶山')
    df.loc[ceshi]  这都是一样的结果

loandata['term']=loandata['term'].map(str.strip)   去除两边空格
loandata['term']=loandata['term'].map(str.title)     转化大写  首字母
df.loc[df[5]=='豫DD5166'].dun.sum()    条件求和

def yujing(x):
    if x[7]>36.7:
        return '报警'
    else:
        return '正常'
df.loc[:,'温度情况']=df.apply(yujing,axis=1)
df[df['温度情况']=='报警']

df.sort_values(by=17)    排序

df.loc['a', :]   df 后面是标签索引      df.loc[df[11]=='工作']     df[df[11]=='工作']     两个结果相同
#pandas 链接MYSQL数据库
import pandas as pd
from sqlalchemy import create_engine

engine=create_engine('mysql+pymysql://username:password@ip:port/database')

sql='''select id,dataid,plateno,lane_id,whole_weight,limit_weight,whole_over
from oses_over2020 limit 1000'''
df=pd.read_sql_query(sql,engine)
原文地址:https://www.cnblogs.com/xupanfeng/p/12650274.html