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,也就不需要轉換了,以下鏈接是具體的使用方式

https://www.cnblogs.com/bahe/p/15194020.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM