[英]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, team
或league
列中的每個元素都是一個 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.