Pandas转换为百分比,分组和转换

时间:2018-01-04 21:21:13

标签: python pandas dataframe

我有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))

这是因为它返回了一个列名和百分比的字典,但是它失去了我对“团队”进行分组的能力

1 个答案:

答案 0 :(得分:1)

"test-watch": "nodemon --exec \"npm test\""
"test-watch": "nodemon --exec npm test"

我的结果与“期望输出”不匹配,因为您的百分比不等于1(应该如此)