私はデータベースにクエリを行い、結果をデータフレームとして保存し、それをfactorize
でpivot_table
で変換します。これは、データベースクエリがデータを返すときにうまく動作しますが、データが返されないときにエラーがスローされます(これは予期されます)。この例外をキャッチして空のデータフレームを返す方法例外をキャッチして空のデータフレームを返します
#When dataframe is non-empty, transformation works fine:
print df
sale name year
0 41 Jason 2012
1 24 Molly 2012
2 31 Jason 2013
3 32 Jason 2014
4 31 Molly 2014
df['groups'] = (pd.factorize(df.year)[0] + 1).astype(str)
df1 = (df.pivot_table(index='name', columns='groups', values=['sale', 'year']))
df1.columns = [''.join(col) for col in df1.columns]
print (df1)
sale1 sale2 sale3 year1 year2 year3
name
Jason 41.0 31.0 32.0 2012.0 2013.0 2014.0
Molly 24.0 NaN 31.0 2012.0 NaN 2014.0
#But when dataframe is empty, factorize by pivot_table throws error
df = pd.DataFrame(columns=['sales','name','year'])
df1 = (df.pivot_table(index='name', columns='groups', values=['sale', 'year']))
df1.columns = [''.join(col) for col in df1.columns]
print (df1)
DataError: No numeric types to aggregate