栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas Dataframe 常用方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas Dataframe 常用方法

1. 取Dataframe中其中几列并组合存储为新的Dataframe
trauma_demo = trauma_demo[['PERSON_ID','VISIT_DATE','VISIT_END_DATE']]
2. dataframe_转换日期格式
1 df1['付款时间1'] = pd.to_datetime(df1['付款时间'])
2 df1['year_month'] = df1['付款时间1'].apply(lambda x : x.strftime('%Y-%m-%d'))
3 print(df1['year_month'])
3. Dataframe实现两表连接

dataframe根据多个条件进行合并
pandas dataframe的各种合并
merge()

# 两表根据相同命名的列合并
df = pd.merge(df1, df2, how='left', on = ['colname'])
# 两表根据命名不同的两列合并:
df = pd.merge(df1, df2, left_on=['df1_colname1'], right_on=['df2_colname1`'])
4. dataframe计算两个日期之间天数

如果不用 .dt.days 会转成timedelta格式,可以试试看

trauma_demo['Length_Stay'] = (pd.to_datetime(trauma_demo['DISCHARGE_DATE']) - pd.to_datetime(trauma_demo['VISIT_DATE'])).dt.days
5. pandas Dataframe 交集并集补集
df1 = Dataframe([['a', 10, '男'], 
                 ['b', 11, '男'], 
                 ['c', 11, '女'], 
                 ['a', 10, '女'],
                 ['c', 11, '男']], 
                columns=['name', 'age', 'sex'])

df2 = Dataframe([['a', 10, '男'], 
                 ['b', 11, '女']],
                columns=['name', 'age', 'sex'])

#取交集:
print(pd.merge(df1,df2,on=['name', 'age', 'sex']))
#取并集:
print(pd.merge(df1,df2,on=['name', 'age', 'sex'], how='outer'))
#取差集(从df1中过滤df1在df2中存在的行):
df1 = df1.append(df2)
df1 = df1.append(df2)
df1 = df1.drop_duplicates(subset=['name', 'age', 'sex'],keep=False)
print(df1)
6. 删除/选取某列含有特殊数值的行
# 生成一个新的 dataframe
df1=pd.Dataframe(a,index=['row0','row1','row2'],columns=list('ABC'))

#选取某列含有特定数值的行
# eg. 选取df1中A列包含数字1的行
df1=df1[df1['A'].isin([1])]

#通过~取反,选取不包含数字1的行
df1=df1[~df1['A'].isin([1])]
7. pandas删除某一列
# method 1
del df['column-name']

#method 2
df= df.drop('column_name', 1)
# or
df.drop('column_name',axis=1, inplace=True)

#method 3
df.drop([df.columns[[0,1, 3]]], axis=1,inplace=True)  

⚠️: df.drop('num',axix=1), 不改变内存,即print df的时候,它还是显示原数据
而 df.drop('num',axix=1,inplace=True),改变内存,运行后df 为改变后的数据

8. 查找重复的行

pandas dataframe重复数据查看.判断.去重
数据示例:

import pandas as pd
df = pd.Dataframe({'name':['苹果','梨','草莓','苹果'], 'price':[7,8,9,8], 'cnt':[3,4,5,4]})

   name	cnt	price
0	苹果	 3	7
1	 梨	 4	 8
2	草莓	 5	9
3	苹果	 6	8
  1. groupby() + count()
a = df.groupby('price').count()>1
price = a[a['cnt'] == True].index
repeat_df = df[df['price'].isin(price)]
  1. duplicated()
flag = df.price.duplicated()

0    False
1    False
2    False
3     True
Name: price, dtype: bool

flag.any()结果为True  (any等于对flag or判断)
flag.all()结果为False  (all等于对flag and判断)

显示某列重复的数据

df[df['name'].duplicated()]

判断dataframe数据多列数据是否重复(多列组合查)

df.duplicated(subset = ['price','cnt'])
9.多行信息合并成一行

Dataframe 多行合并为一行

def ab(df):
    return','.join(df.values)
    
df = df.groupby(['合并依据1','合并依据2'])['需要被合并的列'].apply(ab)
df = df.reset_index()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/648791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号