所以我有大约 40,000 行人员和他们的投诉。我正在尝试将它们分类到各自的列中进行分析,并且我公司中使用其他工具的其他分析师可以使用这些数据。
数据框示例:
df = pd.DataFrame({"person": [1, 2, 3],
"problems": ["body: knee hurts(bad-pain), toes hurt(BIG/MIDDLE); mind: stressed, tired",
"soul: missing; mind: can't think; body: feels great(lifts weights), overweight(always bulking), missing a finger",
"none"]})
df
╔═══╦════════╦══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ ║ person ║ problems ║
╠═══╬════════╬══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ 0 ║ 1 ║ body: knee hurts(bad-pain), toes hurt(BIG/MIDDLE); mind: stressed, tired ║
║ 1 ║ 2 ║ soul: missing; mind: can't think; body: feels great(lifts weights), overweight(always bulking), missing a finger ║
║ 2 ║ 3 ║ none ║
╚═══╩════════╩══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
我尝试过的事情/我在哪里:
所以我至少能够用一个似乎可以用我的真实数据完成这项工作的正则表达式语句将它们分开。
df.problems.str.extractall(r"(\b(?!(?: \b))[\w\s.()',:/-]+)")
我是一个正则表达式初学者,所以我希望这可能会做得更好。我原来的正则表达式模式是r'([^;]+)',但我试图排除分号后的空格。
所以我很茫然。我玩过:
df.problems.str.extractall(r"(\b(?!(?: \b))[\w\s.()',:/-]+)").unstack(),在我的示例中“有效”(不会出错)。
但是使用我的真实数据,我得到一个错误:"ValueError: Index contains duplicate entries, cannot reshape"
即使它适用于我的真实数据,我仍然必须弄清楚如何将这些“类别”(身体、思想、灵魂)放入指定的列中。
如果我能更好地表达这个问题,我可能会有更好的运气。我正在尝试在这里真正自学,所以即使它们不是完整的解决方案,我也会很感激任何线索。
我正在寻找一条线索,也许我可以通过 groupby 或 multiIndex 技术以某种方式做到这一点。对编程有点陌生,所以我仍然在黑暗中摸索。我将不胜感激任何人提供的任何提示或想法。谢谢!
aluckdog
相关分类