我正在嘗試使用每一行作為引數函式迭代 Pandas 資料幀。我試過這個:
def vectorize_df(df, hg):
print(hg str(df['tweets_id']) df['tokenized_text'])
df = pd.DataFrame.from_records(belongs_node, columns=['tweets_id','tokenized_text'])
vfunct = numpy.vectorize(vectorize_df)
vfunct(df, "#Python")
問題是當我這樣做時,df 引數從 'tweets_id' 而不是所有行中獲取值。非常感謝 :)
uj5u.com熱心網友回復:
當您定義要向量化的函式時,則:
- 每列應該是一個單獨的引數,
- 你應該稱之為傳遞相應的列,
- “其他”引數(不是從源陣列中提取的),應標記為“排除”引數。
另一個細節是矢量化函式不應該列印任何內容,但它應該回傳一些值 - 處理來自當前源行的引數的結果。
所以你可以例如繼續如下
將您的功能定義為:
def myFunct(col1, col2, hg): return f'{hg} / {col1} / {col2}'不要在函式名稱中使用vectorize一詞。現在它是一個“普通”功能。稍后將對其進行矢量化。
創建向量化函式:
vfunct = np.vectorize(myFunct, excluded=['hg'])最后呼叫它:
vfunct(df.tweets_id, df.tokenized_text, '#Python')
對于我的示例資料,結果是:
array(['#Python / 101 / aaa bbb ccc ddd',
'#Python / 102 / eee fff ggg hhh iii jjj',
'#Python / 103 / kkk lll mmm nnn ooo ppp'], dtype='<U39')
這取決于你如何處理這個結果。例如,您可以將其設定為源 DataFrame 的新列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/344676.html
上一篇:Numpy:按列折疊陣列
