使用预定义标准从数据帧列表创建数据帧

2024-06-16 10:26:01 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑下面的列表,^ {CD1>},其中存储了3个数据框:

                DF1
fur_color    frequency    column_name
Black          9843         fur_color
Brown          8733         fur_color
White          3419         fur_color
BLACK          1277         fur_color
Tan            988          fur_color

                DF2
size         frequency    column_name
Small          8391          size
Medium         4730          size
Mdm            1322          size
L              4531          size
Large          5286          size

                      DF3
adoption_status    frequency    column_name
    Yes             11239      adoption_status
    Y               1532       adoption_status
    No              3588       adoption_status
 Scheduled          4127       adoption_status
   Sched.           3774       adoption_status

我想创建一个数据帧,由列表中每个数据帧的所有错误值组成

毛发颜色列中的Tan(应为棕色)或BLACK(应为黑色),大小列中的Mdm(应为中等)和L(应为大),以及采用状态列中的Y(应为是)和Sched.(应计划)等值都是错误的值

理想情况下,我希望创建一个如下所示的数据帧:

                       erroneous_values
error_value    frequency    column_name   expected_value
BLACK          1277          fur_color        Black
Tan            988           fur_color        Brown
Mdm            1322            size           Medium
L              4531            size           Large
Y              1532        adoption_status    Yes
Sched.         3774        adoption_status    Scheduled

出于编程目的,请假设频率列中的值将每天更新,并且可以更改

我有一些预定义的标准,以便于查找错误

  • 毛发颜色值应在列表中[“黑色”、“棕色”、“白色”]
  • 大小值应在列表中[“小”、“中”、“大”]
  • 采纳状态值应在列表中[“是”、“否”,计划]

我一直在尝试在列上使用in/not in来检查它们是否有不在可接受值列表中的值,但是,我找不到一个好的方法将其实现为数据帧(它通常返回列表)。是否有一个可扩展(假设添加了更多数据帧)和elegent的解决方案来解决这个问题


Tags: 数据name列表sizestatus错误columncolor
1条回答
网友
1楼 · 发布于 2024-06-16 10:26:01

您可以使用这样的过滤器

df1[~df1['fur_color'].isin(['Black','White','Brown'])

~表示过滤器df1['fur_color'].isin(['Black','White','Brown'])的结果应该是否定的,并且只选择“其他”行

比如说

df1 = pd.read_clipboard()
df1
  fur_color  frequency column_name
0     Black       9843   fur_color
1     Brown       8733   fur_color
2     White       3419   fur_color
3     BLACK       1277   fur_color
4       Tan        988   fur_color

df1_errors = df1[~df1['fur_color'].isin(['Black','White','Brown'])
df1_errors

  fur_color  frequency column_name
3     BLACK       1277   fur_color
4       Tan        988   fur_color

相关问题 更多 >