当前位置: 首页 >数据库 > 工作中对pandas的dataframe的常用总结

工作中对pandas的dataframe的常用总结

  • 获取某一列中元素的个数
df_demo['userid'].value_counts()
  • 给列名重命名
 df_demo.rename(columns={"update_time_x":"update_time","department_x":"department"}, inplace=True)
  • 删除指定列
 df_demo.drop(["update_time","department,"],axis=1)
  • 根据某两列进行排序
df = df.sort_values(by=["end_time", "userid"])
  • pandas to_sql方法写入myql时的内部事务操作:
from sqlalchemy import create_enginedef run(self):  engine = create_engine('mysql+pymysql://user:password@host:port/database',encoding='utf8')  with engine.connect() as conn:trans = conn.begin()try:conn.execute("""delete from table1 where end_time ='2099-12-31'""")my_df.to_sql(name="mytable", con=conn, index=False,if_exists="append")except Exception as e:trans.rollback()raise eelse:trans.commit()trans.close()retu "ok"
  • 判断一个dataframe 是否为空:
changed_un.empty == True#True 表示为空,False表示不为空
  • 将dataframe 通过某一列或几列进行分组,生成多个dataframe,将每个datafame导出到一个excel工作簿中
gropuyby_df = pd.read_excel("aa.xlsx").groupby(['邮箱','所属销售'])for i in gropuyby_df:  i[1].to_excel("./FileDir/{}.xlsx".format(i[0][1]),index=False)
  • 去掉dataframe中的某一列中字符串中的空格
df_today['department'] = df_today['department'].str.replace(' ', '')
  • dataframe 中每一列数据的类型
df_today.dtypes
  • dataframe 中某一列数据的类型
df_today['update_time'].dtypes
  • dataframe 中某一列数据转换成list
df_today['update_time'].to_list()
  • dataframe 根据某一列分组,获取另外一列的最大值
df = df.groupby('group_md5_id').apply(lambda t: t[t.chat_time == t.chat_time.max()])
  • dataframe 中某一列中数值类型为字符串且将其进行格式化输出
df_today['update_time'] = df_today['update_time'].apply(lambda x: x.strftime("%Y-%m-%d"))
  • dataframe 将某一列时间类型的元素转化为时间戳类型
def convert(x):d = datetime.datetime.strptime(x,"%Y-%m-%d %H:%M:%S")t = d.timetuple()timeStamp = int(time.mktime(t))retu timeStampdf['ts_start_time'] = df.start_time.apply(lambda x: convert(x))
  • dataframe 将某一列的类型转化为时间类型
df['start_time'] = pd.to_datetime(df['start_time'])
  • dataframe 产生由A列累加的新列(B列)
df2['累加数'] = df2['周期'].cumsum()
  • dataframe 导出一个excel工作簿的多个sheet
writer = pd.ExcelWriter('demo.xlsx',index=False)df1.to_excel(writer, sheet_name="sheet1", index=False)df2.to_excel(writer, sheet_name="sheet2", index=False)
  • 通过[]获取满足条件的行
df[df['age']>=12] # 获取年龄大于等于12岁的行df[~df['age']>=12] # 获取年龄小于等于12岁的行df = df[df['age'].isnull() == False] #删除年龄为缺少值的行数据
  • 通过两列共同决定另外一列的值
df_total["is_today_add_wechat"] = df_total[["is_power_today_leads", "is_mon_add_wechat"]].apply(lambda x: 1 if x["is_power_today_leads"]==1 and x["is_mon_add_wechat"] else 0, axis=1)
  • groupby中进行多种形式的聚合
df.groupby(by=['学科名称','班主任id','班主任名称','上课时段']).agg(班级数=('班级id','count'),学员数=('学员量','sum'),班级id列表=("班级id", lambda x : ",".join(x.unique())),).reset_index()
  • 向某一类中填充其他列的值
df['变更后上课时段']=df['变更后上课时段'].fillna(df['上课时段'])

作者:peng_li
来源链接:https://www.cnblogs.com/lpdeboke/p/13298550.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117382.html

标签:group by
分享给朋友:

“工作中对pandas的dataframe的常用总结” 的相关文章

MYSQL的存储过程 2022年05月16日 21:54:19
MySQL学习(4)︱数据库的查询 2022年06月07日 01:52:58
mysql 查询表 所有字段 2022年06月09日 20:38:57
mysql查询各分区数据量大小 2022年06月10日 23:41:45
MySQL查询优化 2022年06月14日 16:56:49
【MySQL】数据库的查询操作 2022年06月18日 09:03:56