下記の既存のデータフレームに基づいて新しいデータフレームを作成しようとしています。私は、クリックの平均変化を計算し、それに応じてキャンペーンを分類することを目指しています。グループ別のトレンド変更を見る(python pandas dataframe)
既存のデータフレームDF:
campaign | date | clicks
A 2015-10-11 255
A 2015-10-12 367
A 2015-10-13 489
B 2015-10-11 500
B 2015-10-15 122
C 2015-10-11 33
目標のデータフレームがdf_categorized:
campaign | avg_change | category
A 0.3858 increasing
B -0.756 decreasing
C 0 no change
私はこのコードを試してみましたが、私は、エラーメッセージはTypeErrorを得る: '長い' オブジェクトは、アイテムの割り当てをサポートしていません
#standard packages
import pandas as pd
import numpy as np
#upload data into df
df = pd.read_csv('C:\Users\xxx\Documents\\ad_table.csv')
df.head()
campaign | date | clicks
A 2015-10-11 255
A 2015-10-12 367
A 2015-10-13 489
B 2015-10-11 500
B 2015-10-15 122
C 2015-10-11 33
#create empty dataframe
columns = ['group','avg_change', 'category']
df_categorized = pd.DataFrame(columns=columns)
df_categorized['avg change'] = df.clicks.apply(lambda df: df.pct_change().abs().mean())
#create column
df_categorized['category'] = 0
# going up
df_categorized['category'][df_categorized['avg change'] > 0] = "increasing"
# going down
df_categorized['category'][df_categorized['avg change'] < 0] = "decreasing"
#no change
df_categorized['category'][df_categorized['avg change'] = 0] = "no change"
を参照してください 'df'、ラムダ関数の引数は、系列の要素、すなわちスカラです。シリーズ(ここでは 'df.clicks')に関数を適用すると、その関数は要素ごとに適用されます。 – IanS
あなたは単純な最後のマイナス最初に平均変化を追跡することができます – piRSquared
また、変更の 'abs'を取っても、減少しているか増えているのかは分かりません! – IanS