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.days5. 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 为改变后的数据
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
- groupby() + count()
a = df.groupby('price').count()>1
price = a[a['cnt'] == True].index
repeat_df = df[df['price'].isin(price)]
- 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()



