2013-06-05 37 views
1

您好我有一張桌子(有關它的摘錄的截圖,它有更多的行),並希望提取唯一的'author_id',然後運行一個函數來獲取與每個ID相關的細節。熊貓表,運行.apply()對列的值進行轉換

unique_ids = df['author_id'].unique()

然後我嘗試運行:

df['author_id'].unique().apply(some_function) 

其中 'some_function' 取 'AUTHOR_ID',並返回一些信息

我通過提取唯一ID列表。但我得到的錯誤:

AttributeError: 'numpy.ndarray' object has no attribute 'apply' 

所以我訴諸:

[some_function(author_id) for author_id in unique_ids]

其中一期工程但是,這不是這樣做的效率/矢量化的方式。

以矢量化的方式做到這一點的方法是什麼?

在此先感謝! enter image description here

回答

1

獨特功能的輸出是一個numpy的陣列,它不提供適用的方法。您可以通過陣列創建Series,然後應用你的函數:

pd.Series(df['author_id'].unique()).apply(some_function) 
1

我想你想要做一個groupby

g = df.groupby('author_id') 

g.apply(some_function) 
+0

當我做「G = df.groupby(」 AUTHOR_ID「)」 g是那麼只是「',我似乎無法應用該功能... – user7289

+0

是的,它返回一個groupby對象。你可以使用'g.apply(some_function)'來應用這個函數,你是否可以應用它取決於函數... –

+0

好吧。但是,在這種情況下,函數如何知道列將用作輸入? – user7289