![](/img/trans.png)
[英]unique combinations of values in selected columns in pandas data frame and count
[英]Identify unique combinations of values in columns, sum another column, and count number of appearances in pandas
我有一個像這樣的DataFrame:
import pandas as pd
d = {'param_1': [1.0, 2.0, 1.0, 1.0, 3.0, 3.0, 1.0, 2.0, 2.0,],
'param_2': [0.02, 0.08, 0.02, 0.08, 0.08, 0.02, 0.02, 0.08, 0.02],
'param_3': [0.8, 1.6, 2.5, 1.6, 1.6, 2.5, 0.8, 1.6, 0.8],
'param_4': [0, 1, 0, 0, 1, 0, 0, 1, 0],
'output_value': [67.85, 32.56, 126.4, -56.32, -10.36, 3.67, -6.78, -96.8, 325.4]
}
df = pd.DataFrame(d)
print(df)
param_1 param_2 param_3 param_4 output_value
0 1.0 0.02 0.8 0 67.85
1 2.0 0.08 1.6 1 32.56
2 1.0 0.02 2.5 0 126.40
3 1.0 0.08 1.6 0 -56.32
4 3.0 0.08 1.6 1 -10.36
5 3.0 0.02 2.5 0 3.67
6 1.0 0.02 0.8 0 -6.78
7 2.0 0.08 1.6 1 -96.80
8 2.0 0.02 0.8 0 325.40
我想確定參數的組合(在上面的示例中,第1行和第7行是相同的參數組合,這導致不同的output_values),然后對出現該參數組合的每一行求和output_value
。 我還想計算參數組合出現的次數。
我想出了這個:
for col in df.columns[0:4]:
for each in df[col].unique():
print(col, ":", each, "value sum:", df[df[col] == each]['output_value'].sum(), "... number of unique values:", pd.Series(df[df[col] == each]['output_value'].unique()).count())
這是有用的,但錯誤的:總和包括重復值,並且參數都是個性化的。
對於出現的每個參數組合或param_set
,輸出應該是這樣的:
param_set: {param_1: 2.0, param_2: 0.08, param_3: 1.6, param_4: 1}
output_value_sum = -64.24
n_rows_for_this_set = 2
param_set: {param_1: 1.0, param_2: 0.02, param_3: 0.8, param_4: 0}
output_value_sum = -61.07
n_rows_for_this_set = 2
這個類似的問題: pandas數據框中選定列中的值和count的值的唯一組合似乎可以回答count問題,並且: df.groupby(list(df.columns[0:4])).size()
返回我需要的。
嘗試使用df.groupby(['param_1', 'param_2', 'param_3', 'param_4']).agg(['sum', 'count'])
,它返回:
output_value
sum count
param_1 param_2 param_3 param_4
1.0 0.02 0.8 0 61.07 2
2.5 0 126.40 1
0.08 1.6 0 -56.32 1
2.0 0.02 0.8 0 325.40 1
0.08 1.6 1 -64.24 2
3.0 0.02 2.5 0 3.67 1
0.08 1.6 1 -10.36 1
您可以打開此DataFrame的包裝,以您喜歡的方式打印出來,或者以這種方式查看它!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.