根据条件值列表从数据框中删除一行

时间:2020-10-29 08:30:49

标签: python pandas dataframe

我有以下数据框:

502 - Web server received an invalid response while acting as a gateway or proxy server.

我为“ PatientNumber” == 84提供以下列表:

:( Application Error

在数据框中,对于该“ PatientNumber”,也存在“ SliceNumber” == 36,但是它不在df = pd.DataFrame({'PatientNumber': {800: 75, 801: 75, 802: 75, 803: 75, 804: 75, 805: 75, 806: 75, 807: 75, 808: 75, 809: 75, 810: 75, 811: 75, 812: 75, 813: 75, 814: 75, 815: 75, 816: 75, 817: 75, 818: 75, 819: 75, 820: 75, 821: 75, 822: 75, 823: 75, 824: 75, 825: 75, 826: 75, 827: 76, 828: 76, 829: 76, 830: 76, 831: 76, 832: 76, 833: 76, 834: 76, 835: 76, 836: 76, 837: 76, 838: 76, 839: 76, 840: 76, 841: 76, 842: 76, 843: 76, 844: 76, 845: 76, 846: 76, 847: 76, 848: 76, 849: 76, 850: 76, 851: 76, 852: 76, 853: 76, 854: 76, 855: 76, 856: 77, 857: 77, 858: 77, 859: 77, 860: 77, 861: 77, 862: 77, 863: 77, 864: 77, 865: 77, 866: 77, 867: 77, 868: 77, 869: 77, 870: 77, 871: 77, 872: 77, 873: 77, 874: 77, 875: 77, 876: 77, 877: 77, 878: 77, 879: 77, 880: 77, 881: 77, 882: 77, 883: 77, 884: 77, 885: 77, 886: 77, 887: 78, 888: 78, 889: 78, 890: 78, 891: 78, 892: 78, 893: 78, 894: 78, 895: 78, 896: 78, 897: 78, 898: 78, 899: 78, 900: 78, 901: 78, 902: 78, 903: 78, 904: 78, 905: 78, 906: 78, 907: 78, 908: 78, 909: 78, 910: 78, 911: 78, 912: 78, 913: 78, 914: 78, 915: 78, 916: 78, 917: 78, 918: 79, 919: 79, 920: 79, 921: 79, 922: 79, 923: 79, 924: 79, 925: 79, 926: 79, 927: 79, 928: 79, 929: 79, 930: 79, 931: 79, 932: 79, 933: 79, 934: 79, 935: 79, 936: 79, 937: 79, 938: 79, 939: 79, 940: 79, 941: 79, 942: 79, 943: 79, 944: 80, 945: 80, 946: 80, 947: 80, 948: 80, 949: 80, 950: 80, 951: 80, 952: 80, 953: 80, 954: 80, 955: 80, 956: 80, 957: 80, 958: 80, 959: 80, 960: 80, 961: 80, 962: 80, 963: 80, 964: 80, 965: 80, 966: 80, 967: 80, 968: 80, 969: 80, 970: 80, 971: 80, 972: 80, 973: 81, 974: 81, 975: 81, 976: 81, 977: 81, 978: 81, 979: 81, 980: 81, 981: 81, 982: 81, 983: 81, 984: 81, 985: 81, 986: 81, 987: 81, 988: 81, 989: 81, 990: 81, 991: 81, 992: 81, 993: 81, 994: 81, 995: 81, 996: 81, 997: 81, 998: 81, 999: 81, 1000: 81, 1001: 81, 1002: 82, 1003: 82, 1004: 82, 1005: 82, 1006: 82, 1007: 82, 1008: 82, 1009: 82, 1010: 82, 1011: 82, 1012: 82, 1013: 82, 1014: 82, 1015: 82, 1016: 82, 1017: 82, 1018: 82, 1019: 82, 1020: 82, 1021: 82, 1022: 82, 1023: 82, 1024: 82, 1025: 82, 1026: 82, 1027: 82, 1028: 82, 1029: 82, 1030: 82, 1031: 83, 1032: 83, 1033: 83, 1034: 83, 1035: 83, 1036: 83, 1037: 83, 1038: 83, 1039: 83, 1040: 83, 1041: 83, 1042: 83, 1043: 83, 1044: 83, 1045: 83, 1046: 83, 1047: 83, 1048: 83, 1049: 83, 1050: 83, 1051: 83, 1052: 83, 1053: 83, 1054: 83, 1055: 83, 1056: 83, 1057: 83, 1058: 83, 1059: 83, 1060: 83, 1061: 83, 1062: 83, 1063: 84, 1064: 84, 1065: 84, 1066: 84, 1067: 84, 1068: 84, 1069: 84, 1070: 84, 1071: 84, 1072: 84, 1073: 84, 1074: 84, 1075: 84, 1076: 84, 1077: 84, 1078: 84, 1079: 84, 1080: 84, 1081: 84, 1082: 84, 1083: 84, 1084: 84, 1085: 84, 1086: 84, 1087: 84, 1088: 84, 1089: 84, 1090: 84, 1091: 84, 1092: 84, 1093: 84, 1094: 84, 1095: 84, 1096: 84, 1097: 84, 1098: 84, 1099: 85, 1100: 85, 1101: 85, 1102: 85, 1103: 85, 1104: 85, 1105: 85, 1106: 85, 1107: 85, 1108: 85, 1109: 85, 1110: 85, 1111: 85, 1112: 85, 1113: 85, 1114: 85, 1115: 85, 1116: 85, 1117: 85, 1118: 86, 1119: 86, 1120: 86, 1121: 86, 1122: 86, 1123: 86, 1124: 86, 1125: 86, 1126: 86, 1127: 86, 1128: 86, 1129: 86, 1130: 86, 1131: 86, 1132: 86, 1133: 86, 1134: 86, 1135: 86, 1136: 86, 1137: 86, 1138: 86, 1139: 86, 1140: 86, 1141: 86, 1142: 86, 1143: 86, 1144: 86, 1145: 86, 1146: 86, 1147: 87, 1148: 87, 1149: 87, 1150: 87, 1151: 87, 1152: 87, 1153: 87, 1154: 87, 1155: 87, 1156: 87, 1157: 87, 1158: 87, 1159: 87, 1160: 87, 1161: 87, 1162: 87, 1163: 87, 1164: 87, 1165: 87, 1166: 87, 1167: 87, 1168: 87, 1169: 87, 1170: 87, 1171: 87, 1172: 87, 1173: 87, 1174: 87, 1175: 87, 1176: 87, 1177: 87, 1178: 87, 1179: 88, 1180: 88, 1181: 88, 1182: 88, 1183: 88, 1184: 88, 1185: 88, 1186: 88, 1187: 88, 1188: 88, 1189: 88, 1190: 88, 1191: 88, 1192: 88, 1193: 88, 1194: 88, 1195: 88, 1196: 88, 1197: 88, 1198: 88, 1199: 88}, 'SliceNumber': {800: 7, 801: 8, 802: 9, 803: 10, 804: 11, 805: 12, 806: 13, 807: 14, 808: 15, 809: 16, 810: 17, 811: 18, 812: 19, 813: 20, 814: 21, 815: 22, 816: 23, 817: 24, 818: 25, 819: 26, 820: 27, 821: 28, 822: 29, 823: 30, 824: 31, 825: 32, 826: 33, 827: 1, 828: 2, 829: 3, 830: 4, 831: 5, 832: 6, 833: 7, 834: 8, 835: 9, 836: 10, 837: 11, 838: 12, 839: 13, 840: 14, 841: 15, 842: 16, 843: 17, 844: 18, 845: 19, 846: 20, 847: 21, 848: 22, 849: 23, 850: 24, 851: 25, 852: 26, 853: 27, 854: 28, 855: 29, 856: 1, 857: 2, 858: 3, 859: 4, 860: 5, 861: 6, 862: 7, 863: 8, 864: 9, 865: 10, 866: 11, 867: 12, 868: 13, 869: 14, 870: 15, 871: 16, 872: 17, 873: 18, 874: 19, 875: 20, 876: 21, 877: 22, 878: 23, 879: 24, 880: 25, 881: 26, 882: 27, 883: 28, 884: 29, 885: 30, 886: 31, 887: 1, 888: 2, 889: 3, 890: 4, 891: 5, 892: 6, 893: 7, 894: 8, 895: 9, 896: 10, 897: 11, 898: 12, 899: 13, 900: 14, 901: 15, 902: 16, 903: 17, 904: 18, 905: 19, 906: 20, 907: 21, 908: 22, 909: 23, 910: 24, 911: 25, 912: 26, 913: 27, 914: 28, 915: 29, 916: 30, 917: 31, 918: 1, 919: 2, 920: 3, 921: 4, 922: 5, 923: 6, 924: 7, 925: 8, 926: 9, 927: 10, 928: 11, 929: 12, 930: 13, 931: 14, 932: 15, 933: 16, 934: 17, 935: 18, 936: 19, 937: 20, 938: 21, 939: 22, 940: 23, 941: 24, 942: 25, 943: 26, 944: 1, 945: 2, 946: 3, 947: 4, 948: 5, 949: 6, 950: 7, 951: 8, 952: 9, 953: 10, 954: 11, 955: 12, 956: 13, 957: 14, 958: 15, 959: 16, 960: 17, 961: 18, 962: 19, 963: 20, 964: 21, 965: 22, 966: 23, 967: 24, 968: 25, 969: 26, 970: 27, 971: 28, 972: 29, 973: 1, 974: 2, 975: 3, 976: 4, 977: 5, 978: 6, 979: 7, 980: 8, 981: 9, 982: 10, 983: 11, 984: 12, 985: 13, 986: 14, 987: 15, 988: 16, 989: 17, 990: 18, 991: 19, 992: 20, 993: 21, 994: 22, 995: 23, 996: 24, 997: 25, 998: 26, 999: 27, 1000: 28, 1001: 29, 1002: 1, 1003: 2, 1004: 3, 1005: 4, 1006: 5, 1007: 6, 1008: 7, 1009: 8, 1010: 9, 1011: 10, 1012: 11, 1013: 12, 1014: 13, 1015: 14, 1016: 15, 1017: 16, 1018: 17, 1019: 18, 1020: 19, 1021: 20, 1022: 21, 1023: 22, 1024: 23, 1025: 24, 1026: 25, 1027: 26, 1028: 27, 1029: 28, 1030: 29, 1031: 1, 1032: 2, 1033: 3, 1034: 4, 1035: 5, 1036: 6, 1037: 7, 1038: 8, 1039: 9, 1040: 10, 1041: 11, 1042: 12, 1043: 13, 1044: 14, 1045: 15, 1046: 16, 1047: 17, 1048: 18, 1049: 19, 1050: 20, 1051: 21, 1052: 22, 1053: 23, 1054: 24, 1055: 25, 1056: 26, 1057: 27, 1058: 28, 1059: 29, 1060: 30, 1061: 31, 1062: 32, 1063: 1, 1064: 2, 1065: 3, 1066: 4, 1067: 5, 1068: 6, 1069: 7, 1070: 8, 1071: 9, 1072: 10, 1073: 11, 1074: 12, 1075: 13, 1076: 14, 1077: 15, 1078: 16, 1079: 17, 1080: 18, 1081: 19, 1082: 20, 1083: 21, 1084: 22, 1085: 23, 1086: 24, 1087: 25, 1088: 26, 1089: 27, 1090: 28, 1091: 29, 1092: 30, 1093: 31, 1094: 32, 1095: 33, 1096: 34, 1097: 35, 1098: 36, 1099: 1, 1100: 2, 1101: 3, 1102: 4, 1103: 5, 1104: 6, 1105: 7, 1106: 8, 1107: 9, 1108: 10, 1109: 11, 1110: 12, 1111: 13, 1112: 14, 1113: 15, 1114: 16, 1115: 17, 1116: 18, 1117: 19, 1118: 1, 1119: 2, 1120: 3, 1121: 4, 1122: 5, 1123: 6, 1124: 7, 1125: 8, 1126: 9, 1127: 10, 1128: 11, 1129: 12, 1130: 13, 1131: 14, 1132: 15, 1133: 16, 1134: 17, 1135: 18, 1136: 19, 1137: 20, 1138: 21, 1139: 22, 1140: 23, 1141: 24, 1142: 25, 1143: 26, 1144: 27, 1145: 28, 1146: 29, 1147: 1, 1148: 2, 1149: 3, 1150: 4, 1151: 5, 1152: 6, 1153: 7, 1154: 8, 1155: 9, 1156: 10, 1157: 11, 1158: 12, 1159: 13, 1160: 14, 1161: 15, 1162: 16, 1163: 17, 1164: 18, 1165: 19, 1166: 20, 1167: 21, 1168: 22, 1169: 23, 1170: 24, 1171: 25, 1172: 26, 1173: 27, 1174: 28, 1175: 29, 1176: 30, 1177: 31, 1178: 32, 1179: 1, 1180: 2, 1181: 3, 1182: 4, 1183: 5, 1184: 6, 1185: 7, 1186: 8, 1187: 9, 1188: 10, 1189: 11, 1190: 12, 1191: 13, 1192: 14, 1193: 15, 1194: 16, 1195: 17, 1196: 18, 1197: 19, 1198: 20, 1199: 21}}) 中,因此我想删除它。

我尝试过:

slices = [4, 7, 2, 32, 5, 26, 13, 15, 24, 11, 19, 21, 29, 34, 18, 25, 14, 20, 22, 6, 35, 30, 16, 17, 10, 9, 12, 23, 1, 28, 31, 3, 27, 8, 33]

这样我就可以删除该特定行,但是出现以下错误:

ValueError:系列的真值不明确。使用空 a.bool(),a.item(),a.any()或a.all()。

我可以先提取slices,然后遍历其余的或类似的对象,但是我想知道是否有可能使它更简单,因为我的数据帧比此处提供的数据帧大得多。 >

1 个答案:

答案 0 :(得分:1)

如果需要匹配条件的过滤器行,请使用Series.isin~

df1 = df[(df['PatientNumber'] == 84) & ~df['SliceNumber'].isin(slices)]

如果需要删除其'invert'条件,并将&更改为|

df2 = df[(df['PatientNumber'] != 84) | df['SliceNumber'].isin(slices)]