python - 如何在逗号之间拆分文本并使每个新部分成为新列?
问题描述
所以,我有一个 Pandas 数据框,其中包含一些人喜欢的食物和美食。我必须把它们分成几列,所以每一种食物或菜肴都应该成为一列。每种食物/菜肴都在逗号后面,但如果我只用逗号打破我的字符串,我会丢失括号内的内容,它应该在靠近盘子的地方。我想我应该使用 '),' 作为分隔符,对吧?但我不知道该怎么做。这是我的 DF:
>>> PD_FOODS
USER_ID | FOODS_I_LIKE |
_______________________________________________________________________________
0 100 | Pizza(without garlic, tomatos and onion),pasta |
1 101 | Seafood,veggies |
2 102 | Indian food (no pepper, no curry),mexican food(no pepper) |
3 103 | Texmex, african food, japanese food,italian food |
4 104 | Seafood(no shrimps, no lobster),italian food(no gluten, no milk)|
是否有可能得到像下面这样的结果?
>>> PD_FOODS
USER_ID | FOODS_I_LIKE_1 | FOODS_I_LIKE_2 |
_______________________________________________________________________________
0 100 | Pizza(without garlic, tomatos and onion)| pasta |
谢谢!
解决方案
尝试这个:
df=pd.DataFrame({"User_ID":[1000,1001,1002,1003,1004],
"FOODS_I_LIKE":['Pizza(without garlic, tomatos and onion),pasta',
'Seafood,veggies',
'Indian food (no pepper, no curry),mexican food(no pepper)',
'Texmex, african food, japanese food,italian food',
'Seafood(no shrimps, no lobster),italian food(no gluten, no milk)']})
def my_func(my_string, item_num):
try:
if ')' in my_string:
if item_num == 0:
return my_string.split('),')[item_num]+')'
else:
return my_string.split('),')[item_num]
else:
return my_string.split(',')[item_num]
except IndexError:
return np.nan
for k in range(0,4):
K=str(k+1)
df[f'FOODS_I_LIKE_{K}']=df.FOODS_I_LIKE.apply(lambda x: my_func(x, k))
df.drop(columns='FOODS_I_LIKE')
输出:
用户身份 | FOODS_I_LIKE_1 | FOODS_I_LIKE_2 | FOODS_I_LIKE_3 | FOODS_I_LIKE_4 |
---|---|---|---|---|
1000 | 比萨(不含大蒜、西红柿和洋葱) | 意大利面 | 钠 | 钠 |
1001 | 海鲜 | 蔬菜 | 钠 | 钠 |
1002 | 印度菜(没有胡椒,没有咖喱) | 墨西哥菜(无胡椒) | 钠 | 钠 |
1003 | 德克萨斯州 | 非洲食品 | 日本食品 | 意大利食物 |
1004 | 海鲜(无虾,无龙虾) | 意大利食物(无麸质,无牛奶) | 钠 | 钠 |
推荐阅读
- php - PHP拆分和排序新数组中的数据
- python - 余弦相似度为 -1 或 1,但我需要将它们赌为 0 和 1
- selenium - 在 Selenium 中实现数组元素
- amazon-web-services - 我不完全理解容器化如何不会导致从一开始就过度配置实例
- php - Twilio whatsapp api电话号码的问题
- discord - 检查特定用户是否对 discord.py 做出反应
- javascript - 排序和合并对象列表
- angular - 如何定制
颜色? - bash - 使用 Cloud Build 重启 GCE 实例上的服务
- python - 彩票循环通过列表中的随机数找到找到它需要多少计数