python数据处理入门(5)2020-01-14
2020-01-19 本文已影响0人
机器人会画画
建立df1数据表
conda activate Pytorch
jupyter notebook
import pandas as pd
df1=pd.DataFrame({
"id":[1001,1002,1003,1004,1005,1006,1007,1008],
"gender":['male','female','male','female','male','female','male','female'],
"pay":['Y','N','Y','Y','N','Y','N','Y'],
"m-point":[10,12,20,40,40,40,30,20]})
df1

import numpy as np
df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
"date":pd.date_range('20130102', periods=6),
"city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
"age":[23,44,54,32,34,32],
"category":['100-A','100-B','110-A','110-C','210-A','130-F'],
"price":[1200,np.nan,2133,5433,np.nan,4432]},
columns =['id','date','city','category','age','price'])
df

#数据表匹配合并
df_inner=pd.merge(df,df1,how='inner')

df_left=pd.merge(df,df1,how='left')
df_left

df_right=pd.merge(df,df1,how='right')
df_right

df_outer=pd.merge(df,df1,how='outer')
df_outer

#设置索引列
df_inner.set_index('id')

#按特定列的值排序
df_inner.sort_values(by=['age'])

#如果price列的值>3000,group列显示high,否则显示low
df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')
df_inner

#变小写
df_inner['city']=df_inner['city'].str.lower()
df_inner

df_inner=df_inner.sort_values(by=['age'])
#对复合多个条件的数据进行分组标记
df_inner.loc[(df_inner['city'] =='shenzhen') & (df_inner['price']>= 4000), 'sign']=1
df_inner

#去掉空格,是个大坑啊
df_inner['city']=df_inner['city'].map(str.strip)
df_inner

###注意有空格必须先全部去掉空格哦,否则筛选不出来滴!大坑 应该是因为版本不一样!python或者numpy,pandas显示没有出来
df_inner.loc[(df_inner['city'] == 'beijing') ]

#对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为category和size
split=pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])

#将完成分列后的数据表与原df_inner数据表进行匹配
df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)
df_inner
