您可以使用groupby
與應用函數的返回壓扁DataFrame
到Series
:
df = df.groupby('Id')['Latitude','Longitude'].apply(lambda x: pd.Series(x.values.ravel()))
df.columns = ['StartLat', 'StartLong', 'DestLat', 'DestLong']
df = df.reset_index()
print (df)
Id StartLat StartLong DestLat DestLong
0 101 53.51 118.12 33.32 333.11
如果問題:
TypeError: Series.name must be a hashable type
嘗試改變Series
到DataFrame
,但隨後需要unstack
與droplevel
:
df = df.groupby('Id')['Latitude','Longitude']
.apply(lambda x: pd.DataFrame(x.values.ravel()))
.unstack()
df.columns = df.columns.droplevel(0)
df.columns = ['StartLat', 'StartLong', 'DestLat', 'DestLong']
df = df.reset_index()
print (df)
Id StartLat StartLong DestLat DestLong
0 101 53.51 118.12 33.32 333.11
我的數據幀有400000條記錄。這組作品完美地爲100條記錄。對於超過100條記錄本身,我收到錯誤「TypeError:Series.name必須是可哈希類型」。不知道爲什麼我在數據框中記錄數量增加時出現此錯誤?這些限制了任何特定的大小? – user3447653
我也有這個問題,解決辦法是,給我一分鐘。 – jezrael
謝謝jezrael! – user3447653