我有DataFrame
观察了许多“团队”的许多变量。我已将要更改的列的值转换为二进制值,并希望将DataFrame
转换为“团队”,同时聚合为百分比并转换表以使“团队”行成为列。
df1
Teams X V1 V2 V3 V4
0 Team 1 8 1 1 0 0
1 Team 2 9 1 0 1 0
2 Team 3 6 1 0 0 1
3 Team 1 10 0 1 1 0
这是我到目前为止所尝试的,但是我得到了一个AttributeError:“DataFrame”对象没有属性'value_counts'。
def percent(df, column):
zero = df[column].value_counts()[0]
one = df[column].value_counts()[1]
perc = one/(zero+one)
return {column:perc}
cols = [V1, V2, V3, V4]
df1 = df1.groupby('Teams').agg(percent(df1, cols))
df1 = df1.T
期望的输出:
df1
Team 1 Team 2 Team 3
X 18 9 6
V1 0.25 0.34 0.2
V2 0.1 0.3 0.8
V3 0.9 0.3 0.12
V4 0.23 0.5 0.1
关于如何使这项工作的任何建议?
编辑:我认为问题是当我在percent
内调用agg
函数时,列没有被迭代。我也尝试过:
percent_cols = []
for value in cols:
percent_cols.append(percent(df1, value))
这是因为它返回了一个列名和百分比的字典,但是它失去了我对“团队”进行分组的能力
答案 0 :(得分:1)
"test-watch": "nodemon --exec \"npm test\""
"test-watch": "nodemon --exec npm test"
我的结果与“期望输出”不匹配,因为您的百分比不等于1(应该如此)