Ich habe die folgende Tabelle:Pandas groupby auf zwei Bedingungen
Ich bin versucht, zwei Dinge mit der Tabelle zu tun:
1) Wenn ein Anruf nur einmal erscheint, es machen so dass jeder dieser Einzelanrufeinträge, die auch einen Postleitzahleintrag haben, eine 1 unter Bestellung erhält.
#work with unique data
import pandas as pd
def order_chk(x):
if pd.isnull(x['ORDER_TIMESTAMP']) or pd.isnull(x['ZIP']):
return 0
return 1
calls_t = calls.groupby('ANI').filter(lambda x: len(x) < 2).apply(lambda row: order_chk(row), axis=1)
2) Es wird schwieriger, wenn es zwei Anrufe gibt, aber nur eine Bestellung; in diesen Fällen ich den Anruf möchten, die näher an der Ordnung der 1 unter der Spalte Reihenfolge zu bekommen (die Delta-Spalte Timedelta-Objekte)
So Final Table sieht wie folgt aus
(gelbe Schattierung der 1 zu zeigen)Lassen Sie mich wissen, wenn ich etwas klären kann, ich habe das Gefühl, dass ich etwas wirklich albern mit .Apply auf Gruppen vermisse.
DATE TIMESTAMP ANI DNIS VENDOR ORDER_TIMESTAMP ZIP delta ORDER CALLS
0 7/13/2016 2016-07-13 00:19:09 7249534228 8009894581 CORNERSTONE NaT NaN NaT 0 1
1 7/13/2016 2016-07-13 00:19:10 9207482180 8009894581 CORNERSTONE NaT NaN NaT 0 1
2 7/13/2016 2016-07-13 00:19:22 2405870965 8009894581 CORNERSTONE NaT NaN NaT 0 1
3 7/13/2016 2016-07-13 00:19:29 6192537800 8009894581 CORNERSTONE NaT NaN NaT 0 1
4 7/13/2016 2016-07-13 00:21:00 2405870965 8009894581 CORNERSTONE NaT NaN NaT 0 1
5 7/13/2016 2016-07-13 11:31:19 9857140062 8009136242 ACE NaT NaN NaT 0 1
6 7/13/2016 2016-07-13 12:50:12 5802260487 8009137764 ACE NaT NaN NaT 0 1
7 7/13/2016 2016-07-13 14:13:08 Unavailable 8009135189 CORNERSTONE NaT NaN NaT 0 1
8 7/13/2016 2016-07-13 16:29:13 7172665487 8009140816 CORNERSTONE NaT NaN NaT 0 1
9 7/13/2016 2016-07-13 17:02:25 8079819744 8009131719 CORNERSTONE NaT NaN NaT 0 1
10 7/13/2016 2016-07-13 19:21:54 8435466441 8009135302 CORNERSTONE NaT NaN NaT 0 1
11 7/13/2016 2016-07-13 20:41:28 9063462078 8009894581 CORNERSTONE NaT NaN NaT 0 1
12 7/13/2016 2016-07-13 20:50:19 6143772125 8009084876 CORNERSTONE NaT NaN NaT 0 1
13 7/13/2016 2016-07-13 20:50:20 8148563460 8009084876 CORNERSTONE NaT NaN NaT 0 1
14 7/13/2016 2016-07-13 20:50:22 5616837515 8009084876 CORNERSTONE NaT NaN NaT 0 1
15 7/13/2016 2016-07-13 20:53:07 9032270226 8009084876 CORNERSTONE NaT NaN NaT 0 1
16 7/13/2016 2016-07-13 23:58:38 9283779292 8009131653 CORNERSTONE 2016-07-13 23:59:9 00:00:48 0 1
17 7/13/2016 2016-07-13 21:14:08 9283779292 8009131653 CORNERSTONE 2016-07-13 23:59:9 02:45:18 0 1
Bitte posten Sie keine Daten als PNG ... verwenden Sie Text. So können Benutzer den Code ausschneiden und einfügen. – Merlin
Was passiert, wenn Sie Ihren bestehenden groupby-Code ausführen? Warum funktioniert das nicht? – ale19
Ich habe eine Tabelle mit dem Text eingefügt. Ich habe ein PNG verwendet, weil die Spaltenformatierung es sehr schwierig macht, den tatsächlichen Inhalt von SO zu lesen. Es tut uns leid! -Matt – mburke05