首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用预定义的条件从DataFrames列表创建DataFrame

使用预定义的条件从DataFrames列表创建DataFrame
EN

Stack Overflow用户
提问于 2019-06-06 02:55:06
回答 1查看 32关注 0票数 0

考虑下面的列表,其中存储了3个DataFrames的my_list

代码语言:javascript
复制
                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

我想创建一个由列表中每个DataFrame的所有错误值组成的单个DataFrame。

诸如fur_color列中的Tan (应为棕色)或BLACK (应为黑色)、size列中的Mdm (应为中等)和L (应为大)以及adoption_status列中的Y (应为Yes)和Sched. (应为Scheduled)等值都是错误的值。

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

代码语言:javascript
复制
                       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

出于编程考虑,请假设频率列中的值每天都会更新,并且可以更改。

我有一些预定义的标准,可以让查找错误变得容易。

  • fur_color值应在列表中“黑色”、“棕色”、“白色”
  • size值应在列表中"Small“、"Medium”、"Large"
  • adoption_status值应在列表中"Yes“、"No”、

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 03:22:06

您可以像这样使用过滤器

代码语言:javascript
复制
df1[~df1['fur_color'].isin(['Black','White','Brown'])

~说明过滤器df1['fur_color'].isin(['Black','White','Brown'])的结果应该被否定,并且只选择‘other’行

例如

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56466451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档