python - Python Pandas - 将每个键和值映射到唯一列
问题描述
我正在做一些数据争论,我遇到了以下问题。
在我的 CSV 文件(我通过 pandas 阅读)中,我有一个名为 effects 的列。效果如下所示:
effects
Row 1: Euphoric 52% Creative 42% Happy 40% ...
Row 2: Relaxed 95% Happy 90% Euphoric 60% ...
Row 3: Happy 64% Uplifted 48% Relaxed 48% ...
等等等等。现在有另一个名为 name 的列,如下所示:
name
Row 1: Tommy
Row 2: Susan
Row 3: Bruce
我想要做的是将效果列中的每个键/值映射到与其适当名称相对应的唯一列。
所以基本上它看起来像这样:
name euphoric creative happy
Row 1: Tommy 52% 42% 40%
Row 2: Susan 60% n/a 90%
Row 3: Bruce n/a n/a 64%
因此,您可以看到具有相应百分比的每个效果成为每个名称的唯一列(如果数据不存在,则为 n/a 或 null)。
我假设答案可能包括将效果对象转换为字典列表,也许还有一些 excel 文本到顶部的列操作,以使映射更容易,但我无法成功地做到这一点。
这里的任何帮助将不胜感激。
解决方案
你可以str.extract
这样使用:
df[['name']].join(df.effects.str.extractall('(\w+) (\d+\%)')
.reset_index()
.pivot(index='level_0', columns=0, values=1)
)
输出:
name Creative Euphoric Happy Relaxed Uplifted
Row 1: Tommy 42% 52% 40% NaN NaN
Row 2: Susan NaN 60% 90% 95% NaN
Row 3: Bruce NaN NaN 64% 48% 48%
推荐阅读
- api - 如何通过“TBA”编号跟踪亚马逊包裹?
- python - 如何将嵌套列表映射到 Python 中的可迭代字典
- powershell - 获取命令和版本号
- c# - 为什么 FileSystemWatcher 事件没有触发
- javascript - 如何通过模板文字中的回调函数发送json数据?
- r - 是否有 R 函数将数值从向量转换为数据框中的观察值(行)?
- javascript - 多个导入的类如何互相调用方法?
- flutter - 我在飞镖中得到不可为空的实例,我该如何解决?
- react-native - 如何从 TextInput(onChange 或 onTextChange)创建 rxjs Observable
- intellij-idea - 如何编写 Intellij 插件来显示来自静态分析的 Python 类方法返回值(对于非常简单的表达式)?