Pandas hat die Fähigkeit, Daten abzurufen. Beachten Sie, dass ich auf die Methode gestoßen bin, als ich einen Teil der Zeichenfolge als Suchbedingung verwenden wollte, z. B. wenn die ID nach dem ersten Zeichen mit mehreren Ziffern gruppiert wurde. Ich habe Jupyter verwendet, um den Code auszuführen. ** Bitte installieren Sie Pandas mit Pip usw. ** **.
Python3.5 pandas0.17 Jupyter notebook
Beispiel: AD3489
Es ist kein sehr cleverer Code, aber er hat 200 ID-ähnliche Zeichenfolgen und Namen generiert.
python
import random
id = []
text=['A','B','C','D','E']
name = []
namelistF = ['Thom','Walter','Alexis','Allan','Hubert','Amy','Anastasia','Lorna','Barbara']
namelistL=['Abernethy','Ackroyd','Collins','Guises','Haworth','Hayden','Kingsley','Leyland','McLennan']
for i in range(200):
id.append(text[random.randint(0,len(text))-1] + text[random.randint(0,len(text))-1] + str(random.randint(0,len(text))) + str(random.randint(0,9)) + str(random.randint(0,9) )+ str(random.randint(0,9)))
name.append(namelistF[random.randint(0,len(namelist)-1)] + ' ' + namelistL[random.randint(0,len(namelist)-1)])
Auf diese Weise wurden 200 Daten generiert.
Erhaltene ID-Daten
['AD4865', 'DE5898', 'ED1278', 'EA4809', 'CA1251', 'EC2877', 'EC0579', 'EC3476', 'EE1624', 'AD3489', 'AC1209', 'EE3963', 'BC4656', 'BE3524', 'BE1321', 'CA4381', 'BB4813', 'AC4885', 'EA2290', 'DE3520', 'EC3145', 'CE5665', 'BE0071', 'EA0096', 'DC3792', 'CC1623', 'EE3194', 'EE1599', 'EE3398', 'EE0891', 'AB2412', 'AB3631', 'EC3118', 'DE2280', 'DA2018', 'CE4929', 'DA0157', 'BE3865', 'EE5122', 'ED5983', 'CD3569', 'BA3981', 'DE3913', 'BC3383', 'EE1456', 'AB0498', 'DA3937', 'AE2070', 'CE5804', 'DE2952', 'EB5014', 'AB0785', 'EC5061', 'AE1615', 'AC5219', 'EB3453', 'BB4372', 'EC4597', 'EE3370', 'CC1251', 'AA2228', 'CE3570', 'AC2734', 'DC0885', 'AC1142', 'DE3956', 'EE4113', 'EA4665', 'EB5010', 'CE1369', 'EC4333', 'AC1651', 'CE2802', 'BE3500', 'BB5521', 'DC5230', 'BA3568', 'AD4049', 'EE0666', 'CB1121', 'AA1281', 'CC1060', 'AD3520', 'BC3767', 'CD1125', 'DA0091', 'DA1978', 'BD2344', 'EE1345', 'AE2442', 'BC2306', 'CD1526', 'DD0514', 'EE0192', 'AE0517', 'ED3991', 'EE4694', 'AA1882', 'AC3296', 'ED1368', 'BD2772', 'BC1574', 'AD4402', 'DA2235', 'EC0168', 'CD0686', 'AB1050', 'BB2185', 'EA0274', 'DE4259', 'CB1594', 'ED3869', 'EA4427', 'CE0328', 'DD1004', 'BC4501', 'EE4727', 'CC5595', 'ED2344', 'ED4679', 'EE4167', 'AD5802', 'CB4401', 'EB2113', 'ED1493', 'CD3285', 'AA2717', 'AA1299', 'DA0957', 'CB5816', 'EE3520', 'DB2187', 'EA4323', 'DC3989', 'AA0663', 'DE5448', 'EE1418', 'EE2066', 'AA1373', 'EE1518', 'EE1782', 'CB2087', 'CE0266', 'AC4397', 'EC1308', 'EE2743', 'AD3849', 'CC3094', 'EE2725', 'BD3893', 'EC4543', 'DE2661', 'BE2766', 'DC2414', 'ED1347', 'CB2313', 'AD0026', 'ED1356', 'BE3893', 'EE3442', 'EC1069', 'EE2767', 'CA1410', 'EC5553', 'EA2432', 'AB5636', 'ED1639', 'DB3176', 'EE5932', 'EC1606', 'CC4372', 'EA2838', 'DE2964', 'DD3804', 'BC5171', 'BD4210', 'EE3239', 'AA3637', 'DA4393', 'CB3981', 'CD4627', 'EE0674', 'BE3231', 'BE0014', 'EE4350', 'BD1956', 'CE3526', 'EB2453', 'AB3957', 'EE5343', 'AD1178', 'CC4550', 'DD0465', 'CE2580', 'CD1344', 'ED0247', 'ED4614', 'DE0976', 'CE5883', 'AA2922']
Erhaltene Namensdaten
['Lorna Leyland', 'Anastasia Guises', 'Hubert Guises', 'Allan Kingsley', 'Lorna Kingsley', 'Amy Hayden', 'Hubert Abernethy', 'Anastasia Guises', 'Thom Hayden', 'Walter Kingsley', 'Allan Ackroyd', 'Thom Kingsley', 'Anastasia Collins', 'Thom Ackroyd', 'Thom Collins', 'Lorna Haworth', 'Anastasia Hayden', 'Thom Leyland', 'Alexis Leyland', 'Anastasia McLennan', 'Walter Haworth', 'Amy Collins', 'Barbara Leyland', 'Anastasia Ackroyd', 'Amy Kingsley', 'Barbara Haworth', 'Allan Ackroyd', 'Barbara Guises', 'Thom Haworth', 'Thom Ackroyd', 'Allan Guises', 'Barbara McLennan', 'Barbara Guises', 'Hubert Abernethy', 'Anastasia Haworth', 'Walter Collins', 'Allan Abernethy', 'Hubert Ackroyd', 'Thom McLennan', 'Thom Abernethy', 'Allan McLennan', 'Hubert Kingsley', 'Allan Leyland', 'Allan Haworth', 'Alexis Collins', 'Thom Ackroyd', 'Anastasia Haworth', 'Alexis McLennan', 'Amy Haworth', 'Walter Guises', 'Barbara Hayden', 'Lorna Collins', 'Lorna Abernethy', 'Alexis Abernethy', 'Anastasia Ackroyd', 'Allan Kingsley', 'Thom McLennan', 'Thom Hayden', 'Walter Hayden', 'Lorna Leyland', 'Alexis Leyland', 'Barbara Leyland', 'Barbara Collins', 'Amy Leyland', 'Lorna Hayden', 'Lorna Leyland', 'Walter Kingsley', 'Allan McLennan', 'Anastasia Haworth', 'Allan Guises', 'Anastasia Abernethy', 'Walter Kingsley', 'Amy Abernethy', 'Allan Guises', 'Lorna Ackroyd', 'Alexis Guises', 'Thom Abernethy', 'Lorna McLennan', 'Allan Abernethy', 'Barbara Hayden', 'Amy Collins', 'Allan Kingsley', 'Thom Haworth', 'Thom Kingsley', 'Alexis Leyland', 'Amy Hayden', 'Hubert Hayden', 'Thom Ackroyd', 'Walter Abernethy', 'Barbara Guises', 'Walter Collins', 'Hubert Abernethy', 'Allan Ackroyd', 'Barbara Kingsley', 'Anastasia Hayden', 'Lorna Abernethy', 'Thom Hayden', 'Thom Leyland', 'Amy Leyland', 'Thom Guises', 'Alexis Hayden', 'Walter Guises', 'Anastasia Leyland', 'Thom Ackroyd', 'Allan Collins', 'Barbara Collins', 'Allan Hayden', 'Thom Collins', 'Barbara McLennan', 'Lorna Haworth', 'Walter Hayden', 'Barbara Guises', 'Alexis Collins', 'Lorna Hayden', 'Barbara Haworth', 'Thom Guises', 'Hubert Guises', 'Anastasia Haworth', 'Thom Ackroyd', 'Hubert Haworth', 'Hubert Abernethy', 'Anastasia Leyland', 'Amy Leyland', 'Walter Guises', 'Thom McLennan', 'Hubert Collins', 'Barbara McLennan', 'Anastasia Guises', 'Amy Ackroyd', 'Barbara McLennan', 'Anastasia Guises', 'Walter Hayden', 'Amy Kingsley', 'Lorna Hayden', 'Walter Guises', 'Barbara Guises', 'Thom Kingsley', 'Anastasia Abernethy', 'Amy Kingsley', 'Walter Kingsley', 'Walter McLennan', 'Alexis Ackroyd', 'Lorna Kingsley', 'Amy Collins', 'Anastasia Haworth', 'Amy Haworth', 'Lorna Kingsley', 'Allan Guises', 'Anastasia Guises', 'Amy Haworth', 'Barbara Guises', 'Lorna Leyland', 'Allan Hayden', 'Alexis Leyland', 'Lorna Ackroyd', 'Alexis Guises', 'Walter Collins', 'Lorna Abernethy', 'Hubert Collins', 'Hubert McLennan', 'Alexis Collins', 'Lorna Leyland', 'Barbara Hayden', 'Lorna Kingsley', 'Barbara Haworth', 'Thom Leyland', 'Lorna Ackroyd', 'Walter Guises', 'Allan Haworth', 'Hubert McLennan', 'Walter Haworth', 'Lorna Ackroyd', 'Allan Hayden', 'Lorna Abernethy', 'Allan Abernethy', 'Allan Ackroyd', 'Lorna Haworth', 'Barbara Hayden', 'Thom Haworth', 'Alexis Hayden', 'Barbara Leyland', 'Alexis Ackroyd', 'Walter Abernethy', 'Anastasia Abernethy', 'Thom Kingsley', 'Hubert Haworth', 'Amy Hayden', 'Hubert Guises', 'Walter Hayden', 'Allan Guises', 'Allan Ackroyd', 'Hubert Abernethy', 'Amy McLennan', 'Allan Abernethy', 'Walter Kingsley', 'Allan Haworth', 'Hubert Hayden', 'Lorna McLennan', 'Lorna Collins', 'Lorna Haworth']
Fügen Sie dieses ID-Array und das Namensarray in einen Wörterbuchtyp namens data ein.
data = {
'ID':
['AD4865', 'DE5898', 'ED1278', 'EA4809', 'CA1251', 'EC2877', 'EC0579', 'EC3476', 'EE1624', 'AD3489', 'AC1209', 'EE3963', 'BC4656', 'BE3524', 'BE1321', 'CA4381', 'BB4813', 'AC4885', 'EA2290', 'DE3520', 'EC3145', 'CE5665', 'BE0071', 'EA0096', 'DC3792', 'CC1623', 'EE3194', 'EE1599', 'EE3398', 'EE0891', 'AB2412', 'AB3631', 'EC3118', 'DE2280', 'DA2018', 'CE4929', 'DA0157', 'BE3865', 'EE5122', 'ED5983', 'CD3569', 'BA3981', 'DE3913', 'BC3383', 'EE1456', 'AB0498', 'DA3937', 'AE2070', 'CE5804', 'DE2952', 'EB5014', 'AB0785', 'EC5061', 'AE1615', 'AC5219', 'EB3453', 'BB4372', 'EC4597', 'EE3370', 'CC1251', 'AA2228', 'CE3570', 'AC2734', 'DC0885', 'AC1142', 'DE3956', 'EE4113', 'EA4665', 'EB5010', 'CE1369', 'EC4333', 'AC1651', 'CE2802', 'BE3500', 'BB5521', 'DC5230', 'BA3568', 'AD4049', 'EE0666', 'CB1121', 'AA1281', 'CC1060', 'AD3520', 'BC3767', 'CD1125', 'DA0091', 'DA1978', 'BD2344', 'EE1345', 'AE2442', 'BC2306', 'CD1526', 'DD0514', 'EE0192', 'AE0517', 'ED3991', 'EE4694', 'AA1882', 'AC3296', 'ED1368', 'BD2772', 'BC1574', 'AD4402', 'DA2235', 'EC0168', 'CD0686', 'AB1050', 'BB2185', 'EA0274', 'DE4259', 'CB1594', 'ED3869', 'EA4427', 'CE0328', 'DD1004', 'BC4501', 'EE4727', 'CC5595', 'ED2344', 'ED4679', 'EE4167', 'AD5802', 'CB4401', 'EB2113', 'ED1493', 'CD3285', 'AA2717', 'AA1299', 'DA0957', 'CB5816', 'EE3520', 'DB2187', 'EA4323', 'DC3989', 'AA0663', 'DE5448', 'EE1418', 'EE2066', 'AA1373', 'EE1518', 'EE1782', 'CB2087', 'CE0266', 'AC4397', 'EC1308', 'EE2743', 'AD3849', 'CC3094', 'EE2725', 'BD3893', 'EC4543', 'DE2661', 'BE2766', 'DC2414', 'ED1347', 'CB2313', 'AD0026', 'ED1356', 'BE3893', 'EE3442', 'EC1069', 'EE2767', 'CA1410', 'EC5553', 'EA2432', 'AB5636', 'ED1639', 'DB3176', 'EE5932', 'EC1606', 'CC4372', 'EA2838', 'DE2964', 'DD3804', 'BC5171', 'BD4210', 'EE3239', 'AA3637', 'DA4393', 'CB3981', 'CD4627', 'EE0674', 'BE3231', 'BE0014', 'EE4350', 'BD1956', 'CE3526', 'EB2453', 'AB3957', 'EE5343', 'AD1178', 'CC4550', 'DD0465', 'CE2580', 'CD1344', 'ED0247', 'ED4614', 'DE0976', 'CE5883', 'AA2922'],
'Name':
['Lorna Leyland', 'Anastasia Guises', 'Hubert Guises', 'Allan Kingsley', 'Lorna Kingsley', 'Amy Hayden', 'Hubert Abernethy', 'Anastasia Guises', 'Thom Hayden', 'Walter Kingsley', 'Allan Ackroyd', 'Thom Kingsley', 'Anastasia Collins', 'Thom Ackroyd', 'Thom Collins', 'Lorna Haworth', 'Anastasia Hayden', 'Thom Leyland', 'Alexis Leyland', 'Anastasia McLennan', 'Walter Haworth', 'Amy Collins', 'Barbara Leyland', 'Anastasia Ackroyd', 'Amy Kingsley', 'Barbara Haworth', 'Allan Ackroyd', 'Barbara Guises', 'Thom Haworth', 'Thom Ackroyd', 'Allan Guises', 'Barbara McLennan', 'Barbara Guises', 'Hubert Abernethy', 'Anastasia Haworth', 'Walter Collins', 'Allan Abernethy', 'Hubert Ackroyd', 'Thom McLennan', 'Thom Abernethy', 'Allan McLennan', 'Hubert Kingsley', 'Allan Leyland', 'Allan Haworth', 'Alexis Collins', 'Thom Ackroyd', 'Anastasia Haworth', 'Alexis McLennan', 'Amy Haworth', 'Walter Guises', 'Barbara Hayden', 'Lorna Collins', 'Lorna Abernethy', 'Alexis Abernethy', 'Anastasia Ackroyd', 'Allan Kingsley', 'Thom McLennan', 'Thom Hayden', 'Walter Hayden', 'Lorna Leyland', 'Alexis Leyland', 'Barbara Leyland', 'Barbara Collins', 'Amy Leyland', 'Lorna Hayden', 'Lorna Leyland', 'Walter Kingsley', 'Allan McLennan', 'Anastasia Haworth', 'Allan Guises', 'Anastasia Abernethy', 'Walter Kingsley', 'Amy Abernethy', 'Allan Guises', 'Lorna Ackroyd', 'Alexis Guises', 'Thom Abernethy', 'Lorna McLennan', 'Allan Abernethy', 'Barbara Hayden', 'Amy Collins', 'Allan Kingsley', 'Thom Haworth', 'Thom Kingsley', 'Alexis Leyland', 'Amy Hayden', 'Hubert Hayden', 'Thom Ackroyd', 'Walter Abernethy', 'Barbara Guises', 'Walter Collins', 'Hubert Abernethy', 'Allan Ackroyd', 'Barbara Kingsley', 'Anastasia Hayden', 'Lorna Abernethy', 'Thom Hayden', 'Thom Leyland', 'Amy Leyland', 'Thom Guises', 'Alexis Hayden', 'Walter Guises', 'Anastasia Leyland', 'Thom Ackroyd', 'Allan Collins', 'Barbara Collins', 'Allan Hayden', 'Thom Collins', 'Barbara McLennan', 'Lorna Haworth', 'Walter Hayden', 'Barbara Guises', 'Alexis Collins', 'Lorna Hayden', 'Barbara Haworth', 'Thom Guises', 'Hubert Guises', 'Anastasia Haworth', 'Thom Ackroyd', 'Hubert Haworth', 'Hubert Abernethy', 'Anastasia Leyland', 'Amy Leyland', 'Walter Guises', 'Thom McLennan', 'Hubert Collins', 'Barbara McLennan', 'Anastasia Guises', 'Amy Ackroyd', 'Barbara McLennan', 'Anastasia Guises', 'Walter Hayden', 'Amy Kingsley', 'Lorna Hayden', 'Walter Guises', 'Barbara Guises', 'Thom Kingsley', 'Anastasia Abernethy', 'Amy Kingsley', 'Walter Kingsley', 'Walter McLennan', 'Alexis Ackroyd', 'Lorna Kingsley', 'Amy Collins', 'Anastasia Haworth', 'Amy Haworth', 'Lorna Kingsley', 'Allan Guises', 'Anastasia Guises', 'Amy Haworth', 'Barbara Guises', 'Lorna Leyland', 'Allan Hayden', 'Alexis Leyland', 'Lorna Ackroyd', 'Alexis Guises', 'Walter Collins', 'Lorna Abernethy', 'Hubert Collins', 'Hubert McLennan', 'Alexis Collins', 'Lorna Leyland', 'Barbara Hayden', 'Lorna Kingsley', 'Barbara Haworth', 'Thom Leyland', 'Lorna Ackroyd', 'Walter Guises', 'Allan Haworth', 'Hubert McLennan', 'Walter Haworth', 'Lorna Ackroyd', 'Allan Hayden', 'Lorna Abernethy', 'Allan Abernethy', 'Allan Ackroyd', 'Lorna Haworth', 'Barbara Hayden', 'Thom Haworth', 'Alexis Hayden', 'Barbara Leyland', 'Alexis Ackroyd', 'Walter Abernethy', 'Anastasia Abernethy', 'Thom Kingsley', 'Hubert Haworth', 'Amy Hayden', 'Hubert Guises', 'Walter Hayden', 'Allan Guises', 'Allan Ackroyd', 'Hubert Abernethy', 'Amy McLennan', 'Allan Abernethy', 'Walter Kingsley', 'Allan Haworth', 'Hubert Hayden', 'Lorna McLennan', 'Lorna Collins', 'Lorna Haworth']
}
Da die Daten mit Zufallszahlen generiert werden, unterscheidet sich das Ergebnis von diesem Artikel, ist jedoch auch dann dasselbe, wenn Sie Folgendes tun.
data = {
'ID':id,
'Name':name
}
Erstellen Sie einen DataFrame aus den gerade erstellten Daten.
import pandas ps pd
frame = pd.DataFrame(data)
Der DataFrame wurde in solchen Pandas erstellt.
Verwenden Sie ** str.contains () **, um Pandas-Daten mit regulären Ausdrücken zu durchsuchen. Wenn Sie überprüfen möchten, "wann das erste Zeichen der 6-stelligen ID mit E beginnt"
frame[frame['ID'].str.contains('E.....')]
Dann können Sie eine Liste von Zeilen erhalten, deren ID wie folgt mit E beginnt. 71 Datentreffer. Der Teil 'E .....' ist ein regulärer Ausdruck. "." Bedeutet etwas für einen Charakter. 'E .....' bedeutet, nach den 6 Zeichen zu suchen, die mit E beginnen. Wenn Sie 'E ......' versuchen, bedeutet dies, dass 7 Zeichen mit E beginnen, sodass es nicht trifft.
Um Daten mit 1 in der 3. Ziffer zu finden
frame[frame['ID'].str.contains('..1...')]
Es wird sein.
Es gibt andere Möglichkeiten, einen regulären Ausdruck zu schreiben. Wenn Sie jedoch nach dem Fall suchen möchten, in dem die erste Ziffer beispielsweise AA oder AB ist.
frame[frame['ID'].str.contains('(AA|AB)....')]
Wird besorgt. Wenn Sie auf diese Weise schreiben, erhalten Sie eine Warnung mit der Meldung Benutzerwarnung: Dieses Muster enthält Übereinstimmungsgruppen. Um die Gruppen tatsächlich abzurufen, verwenden Sie str. Extract., Aber das ist in Ordnung.
Das Ergebnis ist das gleiche, unabhängig davon, welches groß ist, aber als Pandas wurde es mit oder Bedingung geschrieben
frame[(frame['ID'].str.contains('AA....')) | (frame['ID'].str.contains('AB....')) ]
Ich denke, die Grammatik von ist korrekter.
Bei Verwendung der und Bedingung mit Pandas
frame[(frame['ID'].str.contains('A.....')) & (frame['ID'].str.contains('...1..')) ]
Kratzer wie.
Ich denke, dass die Art zu schreiben und und oder ein Punkt ist, um in Pandas zu stolpern. ** Rahmen [(Bedingung 1) & (Bedingung 2) | (Bedingung 3)] **.
Wenn Sie unter der Bedingung suchen möchten, dass "die erste Ziffer der ID A und der Name Walter ist", verwenden Sie die Bedingung und.
frame[(frame['ID'].str.contains('A.....')) & (frame['Name'].str.contains('Walter.*'))]
Ich werde schreiben.
'. \ *' Bedeutet "alles ist in Ordnung, die Zeichenfolge wird fortgesetzt". Wenn Sie 'Walter. \ *' Eingeben, werden alle Zeichenfolgen, die mit 'Walter' beginnen, getroffen.
Im Fall der Suchbedingung "beginnend mit Walter und endend mit s" in den vorherigen Bedingungen
frame[(frame['ID'].str.contains('A.....')) & (frame['Name'].str.contains('Walter.*s'))]
Es scheint, dass es so gemacht werden sollte.
Als ich mir jedoch das Hinrichtungsergebnis ansah, bekam ich das Ergebnis von Walter Kingsley. Anscheinend traf es das s von King's Ley. Verwenden Sie $, um anzugeben, dass s das letzte Zeichen ist.frame[(frame['ID'].str.contains('A.....')) & (frame['Name'].str.contains('Walter.*s$'))]
Dann
Die Markierung $ bedeutet, nach dem Ende der Zeichenfolge für reguläre Ausdrücke zu suchen. Also habe ich nicht Kingsleys getroffen, sondern Guises und Collins.Ich wusste nicht, wie ich anhand des ersten Zeichens der im DataFrame gespeicherten Daten suchen sollte, daher musste ich durch Drehen der for-Schleife suchen. Wenn Sie diese Methode verwenden, können Sie jedoch schnell mit einer kurzen Syntax suchen.
Recommended Posts