python-3.x - python3.7 & pandas - 使用行中的列值作为查找值返回不同的列值
问题描述
我遇到了一个棘手的情况 - 对我来说很棘手,因为我真的是 python 新手。我在 pandas 中有一个数据框,我需要通过构建一个新列来逻辑我的方式,该列稍后将用于来自不同源的数据匹配。基本上,图片说明了我无法弄清楚的事情。
对于任何 LOW 标签,我需要检索它们的 MID_LEVEL 标签并将其复制到新列。DESIRED OUTPUT 列是我需要创建的。
您可以看到 LABEL_PATH 的格式设置为我可以使用前 9 位数字作为“查找”来查找相应的 LABEL,但我不知道如何实现这一点。例如,对于 LABEL_PATH 以“0.02.0004”开头的任何行,所需的输出需要是“MID_LEVEL1”。
该数据集有大约 25k 行,因此也希望避免行迭代。
任何帮助将不胜感激!
解决方案
选择与您类似的示例:
df = pd.DataFrame({"a":["1","1.1","1.1.1","1.1.2","2"],"b":range(5)})
df["c"] = np.nan
mask = df.a.apply(lambda x: len(x.split(".")) < 3)
df.loc[mask,"c"] = df.b[mask]
df.c.fillna(method="ffill", inplace=True)
大多数魔法发生在mask
定义的行中,但这并不难:如果 in 的值a
被分成少于 3 个部分(即,最多有一个点),则将其标记为True
,否则不标记。
使用该掩码复制值,然后用上面的有效值填充未指定的值。
推荐阅读
- python - 编译器显示 struct.error: ushort format requires 0 <= number <= (0x7fff * 2 + 1) in zipfile.py
- javascript - 从 HTML 响应中捕获文本并在节点 js 中写入条件
- flutter - Flutter Linux flutter: [MethodChannelFilePicker] 不支持的操作
- java - 如何模拟参数请求单元测试谷歌云功能?
- r - 不平衡数据的纵向多层次模型
- node.js - 如何从嵌套数组中获取字段和值并查询它们以在 mongodb 中查找 doc?
- reactjs - ReactJs FE 和 Django Rest Services 与 Azure AD 进行身份验证和授权
- linux - 有没有办法在linux中删除名称替换的文件?
- flutter - 带有 HTTP 请求的 Stream Builder 不工作 [Flutter]
- c# - ASP.NET Core 3.1 MVC 返回格式为字符串的 JSON