Вы можете сделать это, используя следующий код
>>> import numpy as np
>>> import pandas as pd
>>>
>>> df = pd.DataFrame([
... [1, 10, 100],
... [1, np.nan, 200],
... [2, 30, np.nan],
... [2, 40, np.nan],
... [3, 50, 500],
... [3, 60, 600]])
>>>
>>> df.columns = ["Group", "Var1", "Var2"]
>>>
>>> groupCol = "Group"
>>> nan_df = df.isna().groupby(groupCol).sum().transpose()
>>> nan_df.columns = ['Missing Values']
>>> std_df = df.groupby(groupCol).std().round(3).transpose()
>>> mean_df = df.groupby(groupCol).mean().round(3).transpose()
>>> # get mean and standard deviation into one column
>>> for i in range(len(mean_df.columns)):
... mean_df.loc[:, mean_df.columns[i]] = mean_df[mean_df.columns[i]].astype(str)+'('+std_df[std_df.columns[i]].astype(str)+')'
...
>>> # change the column names
>>> mean_df.columns = ["Group "+ str(each_group) for each_group in mean_df.columns]
>>> # add missing value data
>>> mean_df = mean_df.join(nan_df)
>>> mean_df
Group 1 Group 2 Group 3 Missing Values
Var1 10.0(nan) 35.0(7.071) 55.0(7.071) 1
Var2 150.0(70.711) nan(nan) 550.0(70.711) 2
>>>
Все вышеперечисленные операции используют метод groupby
для фреймов данных.С небольшими манипуляциями вы можете легко получить данные в нужном формате.