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