如何将列表的循环替换为数据框列
How can I replace for loop of list in to dataframe column
我有数据框 df_paths
,我想从列路径中的列表创建列 path_pair。输出选择如下所示 table:
session_id
path
path_pair
T01
[Start, play_series, Null]
[[Start, play_series],[ play_series, Null]]
T02
[Start, play_tv, purchase, Conversion]
[[Start, play_tv],[play_tv,purchase],[purchase, Conversion]]
我的脚本:
for index, row in df_paths.iterrows():
list_pair = []
print(index, row['path'])
for i, val in enumerate(row['path']):
if i != len(row['path'])-1:
row_ls = [row['path'][i], row['path'][i+1]]
# append row list to ls
list_pair.append(row_ls)
print(list_pair)
row['path_pair'] = np.array(row['path'])
list_new = np.array(list_pair)
df_paths.at[index, 'path_pair'] = row['path_pair'][list_new]
print(df_paths.loc[index]['path_pair'])
错误:
IndexError: arrays used as indices must be of integer (or boolean) type
data = [['T01', ['Start', 'play_series', 'Null']], [
'T02', ['Start', 'play_tv', 'purchase', 'Conversion']]]
df = pd.DataFrame(data, columns=['session_id', 'path'])
df['path_pair'] = df['path'].apply(lambda x: list(zip(x, x[1:])))
df
我有数据框 df_paths
,我想从列路径中的列表创建列 path_pair。输出选择如下所示 table:
session_id | path | path_pair |
---|---|---|
T01 | [Start, play_series, Null] | [[Start, play_series],[ play_series, Null]] |
T02 | [Start, play_tv, purchase, Conversion] | [[Start, play_tv],[play_tv,purchase],[purchase, Conversion]] |
我的脚本:
for index, row in df_paths.iterrows():
list_pair = []
print(index, row['path'])
for i, val in enumerate(row['path']):
if i != len(row['path'])-1:
row_ls = [row['path'][i], row['path'][i+1]]
# append row list to ls
list_pair.append(row_ls)
print(list_pair)
row['path_pair'] = np.array(row['path'])
list_new = np.array(list_pair)
df_paths.at[index, 'path_pair'] = row['path_pair'][list_new]
print(df_paths.loc[index]['path_pair'])
错误:
IndexError: arrays used as indices must be of integer (or boolean) type
data = [['T01', ['Start', 'play_series', 'Null']], [
'T02', ['Start', 'play_tv', 'purchase', 'Conversion']]]
df = pd.DataFrame(data, columns=['session_id', 'path'])
df['path_pair'] = df['path'].apply(lambda x: list(zip(x, x[1:])))
df