gpt4 book ai didi

python - 拆分 df 中的每一行并为每个元素添加值

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:12 27 4
gpt4 key购买 nike

我有一个看起来像这样的 df:

user_index  movie_index  genre_index          cast_index
3590 1514 10|12|17|35 46|534
63 563 4|2|1|8 9|27

生成自:

import pandas as pd
ds = pd.DataFrame({'user_index': [3590,63], 'movie_index': [1514,563],
'genre_index':['10|12|17|35', '4|2|1|8'], 'cast_index':['46|534', '9|27']})

我需要用'|'分割每一行(而将每一行转换为列表)并向每个元素添加一些值以获得这样的 df(此处,“5”在“genre_index”列中按元素添加,“2”在“user_index”列中按元素添加):

    user_index  movie_index  genre_index          cast_index
[3592] [1514] [15,17,22,38] [46,534]
[65] [563] [9,7,6,13] [9,27]

为了实现这一点,我创建了一个将列作为参数的函数,将其拆分并按元素添加一个值(我不将“df”作为参数,因为每个列的附加值都不同)看起来像这样:

def df_convertion(input_series, offset):
column = input_series.str.split('|', expand=False).apply(lambda x: x + offset)
return (column)

但显然整个事情没有按预期工作(我已经尝试过 'genre_index' 列)并返回这样的错误:

TypeError: can only concatenate list (not "int") to list

如果能帮助修复它,我们将不胜感激!

最佳答案

这是我建议使用 apply 的罕见情况之一。尝试看看您是否可以使用其他形式的数据表示。

offset_dct = {'user_index': 2, 'genre_index': 5}
df = df.fillna('').astype(str).apply(lambda x: [
[int(z) + offset_dct.get(x.name, 0) for z in y.split('|')] for y in x])

df
cast_index genre_index movie_index user_index
0 [46, 534] [15, 17, 22, 40] [1514] [3592]
1 [9, 27] [9, 7, 6, 13] [563] [65]

关于python - 拆分 df 中的每一行并为每个元素添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51972968/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com