Create list of row elements – Python
Question:
Answers:
If need lists use Series.expanding
in list comprehension:
df = pd.DataFrame({'A':range(1, 7)})
df['B'] = [x.tolist() for x in df.A.expanding()]
print (df)
A B
0 1 [1]
1 2 [1, 2]
2 3 [1, 2, 3]
3 4 [1, 2, 3, 4]
4 5 [1, 2, 3, 4, 5]
5 6 [1, 2, 3, 4, 5, 6]
Alternative:
L = df.A.tolist()
df['B'] = [L[:i] for i, x in enumerate(L,1)]
If need median use Expanding.median
:
df = pd.DataFrame({'A':range(1, 7)})
df['B'] = df.A.expanding().median()
print (df)
A B
0 1 1.0
1 2 1.5
2 3 2.0
3 4 2.5
4 5 3.0
5 6 3.5
Example
df = pd.DataFrame([1, 2, 3, 4, 5, 6], columns=['A'])
df
A
0 1
1 2
2 3
3 4
4 5
5 6
Code
out = df.assign(B=df['A'].expanding().median())
out
A B
0 1 1.0
1 2 1.5
2 3 2.0
3 4 2.5
4 5 3.0
5 6 3.5
If need lists use Series.expanding
in list comprehension:
df = pd.DataFrame({'A':range(1, 7)})
df['B'] = [x.tolist() for x in df.A.expanding()]
print (df)
A B
0 1 [1]
1 2 [1, 2]
2 3 [1, 2, 3]
3 4 [1, 2, 3, 4]
4 5 [1, 2, 3, 4, 5]
5 6 [1, 2, 3, 4, 5, 6]
Alternative:
L = df.A.tolist()
df['B'] = [L[:i] for i, x in enumerate(L,1)]
If need median use Expanding.median
:
df = pd.DataFrame({'A':range(1, 7)})
df['B'] = df.A.expanding().median()
print (df)
A B
0 1 1.0
1 2 1.5
2 3 2.0
3 4 2.5
4 5 3.0
5 6 3.5
Example
df = pd.DataFrame([1, 2, 3, 4, 5, 6], columns=['A'])
df
A
0 1
1 2
2 3
3 4
4 5
5 6
Code
out = df.assign(B=df['A'].expanding().median())
out
A B
0 1 1.0
1 2 1.5
2 3 2.0
3 4 2.5
4 5 3.0
5 6 3.5