Я могу использовать группу, чтобы получить общие медианы для документа, например. "Печать (df.groupby ([ 'Key']). Медиана ())". Но я хочу изучить соответствующий способ сделать это построчно и посмотреть, изменилась ли вышеупомянутая группа. Ниже приведен один очень неуклюжий и непитонный подход.
CSV:
A,1
A,2
A,3
A,4
A,5
A,6
A,7
B,8
B,9
B,10
B,11
B,12
B,13
B,14
B,15
B,16
B,17
import pandas as pd
import numpy as np
import statistics
df = pd.read_csv(r"C:\Users\mmcgown\Downloads\PythonMedianTest.csv",names=['Key','Values'])
rows = len(df.iloc[:,0])
i=0
med=[]
while i < rows:
if i == 0 or df.iloc[(i-1,0)]==df.iloc[(i,0)]:
med.append(df.iloc[i,1])
if i==(rows-1):
print(f"The median of {df.iloc[(i,0)]} is {statistics.median(med)}")
elif df.iloc[(i-1,0)]!=df.iloc[(i,0)]:
print(f"The median of {df.iloc[(i-1,0)]} is {statistics.median(med)}")
med = []
i += 1
Выход:
The median of A is 4
The median of B is 13
Я получаю то же самое, что и group by, за исключением ошибки округления. Но я хочу сделать это самым лаконичным, питонским способом, возможно, используя понимание списка.