pandas中dataframe与series转换的问题
import pandas as pd import datetime as dt path='D:/jsp/dataframe/tb_store_order.csv' df = pd.read_csv(path,low_memory=False) df = df[['member_id','create_time','coupon_id']] df = df[df.coupon_id==0] df.create_time = pd.to_datetime(df.create_time) df['create_time_date'] = df.create_time.apply(lambda x:x.strftime('%Y-%m-%d')) df_min=df.groupby('member_id').create_time_date.min() sj='2020-10-01' sj_time = dt.datetime.strptime(sj, '%Y-%m-%d') df7= pd.DataFrame({'v1':[],'v2':[]}) while sj_time <= dt.datetime.strptime('2020-10-30', '%Y-%m-%d'): if ( sj_time.weekday() < 5 ): df2 = df[df['create_time_date'] == sj_time.strftime('%Y-%m-%d')] df3 = pd.merge(df2,df_min,on='member_id',how='inner') df3.create_time_date_x = pd.to_datetime(df3.create_time_date_x) df3.create_time_date_y = pd.to_datetime(df3.create_time_date_y) df3['shicha']=(df3.create_time_date_x-df3.create_time_date_y).dt.days df3.drop_duplicates(subset=['member_id'],keep='first',inplace=True) df4=df3.groupby(['shicha']).shicha.count() df5= {'v1':df4.index,'v2':df4.values} df6= pd.DataFrame(df5) df7=df7.append(df6,ignore_index=True) print(df4) print(df5) print(df6) sj_time = sj_time + dt.timedelta(days=1) else: sj_time = sj_time + dt.timedelta(days=1) df7.to_csv('D:/jsp/dataframe/CLV.csv')
其中df4因为使用了group by从dataframe变成了series,因为series没有append函数,然后用了一个简单的转换又转成了dataframe。另外一段代码里是不能用merge(),也得转换。
首先定义dictionary,df5={'name1':df4.index,'name2':df4.values}
然后使用pd.DataFrame()将dictionary转成dataframe,df6 = pd.Dataframe(df5),再使用append函数。
没啦,应该还会存在其它很多解决办法。
更新一下,groupby可以配合agg使用,这样就不会出现series,也就不需要转换了,以下链接是具体的使用方式
啥也不是