Я знаю, что это плохо для l oop через строки в df, но у меня есть столбец списков из пары сотен строк, в котором мне нужно изменить каждый элемент в списке. Мне трудно использовать .str.replace () /. Strip () таким образом, чтобы иметь дело со всеми лишними пробелами и т. Д. c. Входные данные:
import pandas as pd
input_19 = [{'name':'Hector', 'team_position':'forward', 'player_traits':'Finesse Shot, Speed Dribbler (CPU AI Only)'}, {'name':'Bysim', 'team_position':'forward', 'player_traits':'Long Shot Taker (CPU AI Only)'}, {'name':'Nicolas', 'team_position':'defender', 'player_traits':'Beat Offside Trap, Finesse Shot'}]
input_20 = [{'name':'Johann', 'team_position':'gk', 'player_traits':'GK Long Throw'}, {'name':'Winston', 'team_position':'defender', 'player_traits':'Dives Into Tackles (CPU AI Only)'}, {'name':'Petr', 'team_position':'forward', 'player_traits':'Flair, Long Shot Taker (CPU AI Only)'}]
df_19 = pd.DataFrame(input_19)
df_20 = pd.DataFrame(input_20)
выходные данные:
df_19:
name player_traits team_position
0 Hector Finesse Shot, Speed Dribbler (CPU AI Only) forward
1 Bysim Long Shot Taker (CPU AI Only) forward
2 Nicolas Beat Offside Trap , Finesse Shot defender
df_20:
name player_traits team_position
0 Johann GK Long Throw gk
1 Winston Dives Into Tackles (CPU AI Only) defender
2 Petr Flair, Long Shot Taker (CPU AI Only) forward
Столбец 'player_traits' в обе DFS нуждаются в модификации строки, как указано выше, поэтому я могу посчитать их частоту. Я хотел бы изменить их в исходном df (то есть по году), чтобы я мог создавать новые dfs путем фильтрации с помощью 'team_position' и использовать Counter, чтобы найти итоги каждой черты / элемента. Это код, который у меня есть, но я не уверен, как назначить новый 'temp_list' соответствующему месту в исходном df, так как .lo c в сочетании с .replace () изменяет фрагмент кадра данных, и. replace () для dfs принимает только строковые аргументы:
df_list = [df_19, df_20]
for df in df_list:
for lst,i in zip(df['player_traits'].values, range(len(df['player_traits'].values))):
temp_list = []
if type(lst) != float:
lst = lst.replace('(CPU AI Only)',"")
lst = lst.split(",")
for x in lst:
x = x.strip()
temp_list.append(x)
# df[location of original value in original df] = temp_list
# something like:
# df[i, 'player_traits'] = temp_list
Как мне завершить этот код, который позволяет мне изменять исходное значение df с помощью измененного списка?