如何通过平均一些列来从existig数据帧中创建一个新的数据帧

时间:2020-11-01 06:23:21

标签: python pandas

我有一个包含列的数据框-

cols = group_dataframe.columns
print(cols)

Index(['TEST_TXT', 'count', 'mean', 'std', 'LSL', 'USL', 'median', 'Cp', 'CpK', 'Cpu', 'Cpl', 'min', 'max', '25%',
       '50%', '75%'],
      dtype='object')

我希望创建一个新数据框,其中包含某些行,例如"mean","std","Cp","Cpu"的所有行的平均值,但"min""max"列的最小值和最大值,也请保留test_txt来自处理。

我的代码看起来像这样-

new_df = pd.DataFrame()
new_df["Group"] = np.asarray(test_group_name)

for col in cols:
    if col == "TEST_TXT":
        pass
    elif col in ["min","max"]:
        new_df[col] = np.min(group_dataframe[col].astype(float))
    else:
        new_df[col] = np.mean(group_dataframe[col].astype(float))

,但这似乎根本无法填充数据框。新的数据框应只有一行,某一列的平均值,而另一列的最小值/最大值。任何人都可以帮助找到错误(如果有),或者提出一些更好的方法来实现相同的目的?

2 个答案:

答案 0 :(得分:1)

我首先创建一个带有平均值的字典,然后将其转换为DataFrame

res = {}
for col in cols:
    if col == "TEST_TXT":
        pass
    elif col in ["min","max"]:
        res[col] = np.min(group_dataframe[col].astype(float))
    else:
        res[col] = np.mean(group_dataframe[col].astype(float))

new_df = pd.DataFrame(res)

答案 1 :(得分:1)

aggregate似乎回答了您的需求:

df = pd.DataFrame(np.random.random((5,4)), columns=['count', 'dummy', 'mean', 'max'])
df.agg({'count': 'mean', 'mean':'mean', 'max':'max'})

在这里,我创建一个包含4列的Dataframe,并使用特定功能汇总感兴趣的列。结果是Series

count    0.493802
mean     0.532349
max      0.676727