簡體   English   中英

Append 元素到 numpy.ndarray 數據類型的列 Pandas

[英]Append element to column with numpy.ndarray datatype in Pandas

我想 append 一個字符串到一個 numpy.ndarray object 的列。下面的代碼不起作用:

def filter_by_player(df, players, team):
    filtered_df = df[df['player'].isin(players)]
    filtered_df['league'] = filtered_df['league'].apply(lambda x: x + [team])
    return filtered_df

聯賽欄看起來像這樣 ['barca','real','sevilla']。 我想添加它,但上面的代碼不起作用。

球員 = ['梅西', '本澤馬', '布斯克茨']

league_df
player      | team
messi       | ['barca']
lewandowski | ['dortmund', 'bayern', 'barca']

當我調用 function filter_by_player(players, 'psg')

新的 dataframe league_df 應該變成這個,因為梅西在球員名單中:

player      | team
messi       | ['barca', 'psg']

IIUC, teamleague列中的每個元素都是一個 numpy 數組。 因此,使用np.append而不是附加列表。 嘗試這個 -

import numpy as np

def filter_by_player(df, players, team):
    filtered_df = df[df['player'].isin(players)]
    filtered_df['team'] = filtered_df['team'].apply(np.append, args=([team]))
    return filtered_df

new_df = filter_by_player(league_df, ['messi'], 'psg')
print(new_df)
  player          team
0  messi  [barca, psg]

只是仔細檢查初始數據類型和發布數據類型是否為 numpy -

print(type(league_df.iloc[0,1]))
print(type(new_df.iloc[0,1]))
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>

編輯:如果您不嚴格將其保留為 numpy 數組,請嘗試這個 -

def filter_by_player(df, players, team):
    filtered_df = df[df['player'].isin(players)]
    filtered_df['league'] = filtered_df['league'].apply(lambda x: list(x)+[team])
    return filtered_df

new_df = filter_by_player(league_df, ['messi'], 'psg')
print(new_df)
print(type(league_df.iloc[0,1]))
print(type(new_df.iloc[0,1]))
  player        league
0  messi  [barca, psg]

<class 'numpy.ndarray'>
<class 'list'>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM