请让我知道如何将列表转换为str。
我的数据框(df_meta_review1)结构示例:
-----------------------------------------------------
userID categories category_domain(I want a this!)
-----------------------------------------------------
a1010 [pc, game] pc,game-A
a1011 [mobile, game, education] mobile, game, education-A
我已经尝试过以下
1. df_meta_review1['category_domain'] = df_meta_review1['categories'].astype('str') #error!
2. df_meta_review1['category_domain'] = df_meta_review1(['categories']).apply(','.join) #error!
3. df_meta_review1['category_domain'] = ",".join(map(str, df_meta_review1(['categories']))) #error!
答案 0 :(得分:1)
我已使用以下代码重新创建了您的表
df_meta_review1 = pd.DataFrame([('a101',['pc', 'game']),('a1001', ['mobile', 'game', 'education'])], columns = ['userID', 'categories'])
运行第一段代码不会出错。确定运行时会出错吗?下面是结果表。
userID categories category_domain
0 a101 [pc, game] ['pc', 'game']
1 a1001 [mobile, game, education] ['mobile', 'game', 'education']
如果我运行第二行,也会出现错误。像这样:
TypeError: 'DataFrame' object is not callable
要解决此问题,我从数据框名称后面删除了圆括号,因为错误提示您正在尝试将数据框用作函数(这是可调用的意思)
df_meta_review1['category_domain'] = df_meta_review1['categories'].apply(','.join)
这不再产生错误,输出看起来像:
userID categories category_domain
0 a101 [pc, game] pc,game
1 a1001 [mobile, game, education] mobile,game,education
我想您正在寻找什么。 对于第三行代码,我得到了错误:
TypeError: 'DataFrame' object is not callable
同样,从数据帧名称后面删除圆括号,将产生无错误执行的代码。
df_meta_review1['category_domain'] = ",".join(map(str, df_meta_review1['categories']))
但是我认为这不是您想要的。
userID categories category_domain
0 a101 [pc, game] ['pc', 'game'],['mobile', 'game', 'education']
1 a1001 [mobile, game, education] ['pc', 'game'],['mobile', 'game', 'education']
答案 1 :(得分:1)
您可以使用apply
函数,该函数遍历数据框并定义一个函数以返回每一行的结果,如下所示:
def app(row):
return ",".join(row['categories'])
并将其传递给应用功能:
df_meta_review1['category_domain'] = df_meta_review1.apply(lambda x: app(x),axis =1)
输出:
userID categories category_domain
0 a101 [pc, game] pc,game
1 a1001 [mobile, game, education] mobile,game,education