Ich habe Dataframe
wie dieseRollen Paste Wert Zeichenfolge nach Gruppe von
df = pd.DataFrame({'E-Mail': np.random.choice(list('AB'), 20),
'Session': np.random.randint(1, 10, 20)})
df.Session=df.Session.astype(str)
df
Out[350]:
E-Mail Session
0 A 7
1 A 8
2 A 6
3 A 1
4 B 6
5 A 6
6 A 3
7 A 9
8 B 5
9 B 3
10 B 5
11 B 6
12 B 1
13 B 5
14 A 3
15 A 6
16 A 8
17 A 2
18 A 4
19 A 6
ich die Roll Paste jedes group
(durch E-Mail
), Fenster = 2 erhalten möchten.
Dies ist meine Vorgehensweise ab sofort.
def running_paste(s, n):
return [','.join(s[lo:lo + n]) for lo in range(len(s) - n + 1)]
A=[]
for name, df1 in df.groupby('E-Mail'):
df1['LOL'] = np.append(np.nan, running_paste(df1.Session, 2))
A.append(df1)
pd.concat(A,axis=0)
Out[352]:
E-Mail Session LOL
0 A 7 nan
1 A 8 7,8
2 A 6 8,6
3 A 1 6,1
5 A 6 1,6
6 A 3 6,3
7 A 9 3,9
14 A 3 9,3
15 A 6 3,6
16 A 8 6,8
17 A 2 8,2
18 A 4 2,4
19 A 6 4,6
4 B 6 nan
8 B 5 6,5
9 B 3 5,3
10 B 5 3,5
11 B 6 5,6
12 B 1 6,1
13 B 5 1,5
Gibt es einen einfacheren Weg, dies zu erreichen?
@ScottBoston Ich schaffe ich es nicht für eine lange Zeit ..Let mich daran zu arbeiten, und zu meinem Profil hinzufügen so :) – Wen