Как получить результат l oop по столбцу в python - PullRequest
1 голос
/ 16 марта 2020

У меня есть фрейм данных, я разбил данные на 3 сегмента, применил для l oop и вычислил особенности данных, я хочу объединить результат 3 циклов в одной строке и изменить имя столбца, добавив 1,2,3 в конец имени столбца объекта.

splitt=np.array_split(df,3)
for x in splitt:
    x1=np.mean(A)
    x1=pd.DataFrame([x1],columns=['mean'])
    x1['std']=np.std

требуемый_результат;

    mean_A_1 std_B_1  mean_A_2 std_B_2  mean_A_3 std_B_3 

1 Ответ

1 голос
/ 16 марта 2020

Вы можете использовать:

df = pd.DataFrame({'A':[0,1,5,5,8,9,6],'B':[5,8,0,9,5,6,3]})

splitt=np.array_split(df,3)
L = {k: v for i, x in enumerate(splitt, 1) 
          for k, v in {f'mean_A_{i}': x['A'].mean(), f'std_B_{i}': np.std(x['B'])}.items()}

df1 = pd.DataFrame([L])
print (df1)
   mean_A_1   std_B_1  mean_A_2  std_B_2  mean_A_3  std_B_3
0       2.0  3.299832       6.5      2.0       7.5      1.5

Другое решение с l oop:

L = []
splitt=np.array_split(df,3)
for i, x in enumerate(splitt, 1):
    d = {f'mean_A_{i}': x['A'].mean(), 
         f'std_B_{i}': np.std(x['B'])}
    L.append(pd.Series(d))


df1 = pd.concat(L).to_frame().T
print (df1)
   mean_A_1   std_B_1  mean_A_2  std_B_2  mean_A_3  std_B_3
0       2.0  3.299832       6.5      2.0       7.5      1.5
...