考虑下面的列表,其中存储了3个DataFrames的my_list
:
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:
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
来检查它们是否具有不在可接受的值列表中的值,但是,我找不到一种好的方法来将其实现为DataFrame (它通常返回列表)。对于这个问题,有没有可扩展的(假设添加更多的DataFrames )和优雅的解决方案?
发布于 2019-06-06 03:22:06
您可以像这样使用过滤器
df1[~df1['fur_color'].isin(['Black','White','Brown'])
~
说明过滤器df1['fur_color'].isin(['Black','White','Brown'])
的结果应该被否定,并且只选择‘other’行
例如
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
https://stackoverflow.com/questions/56466451
复制相似问题