我現在有一些數據集的結構如下:熊貓 - 如何分組和拆分多個變量?
data = {'participant': [100, 101, 102, 103, 104, 105, 106, 107, 108, 109],
'step_name': ['first', 'first', 'second', 'third', 'second', 'first', 'first', 'first', 'second', 'third'],
'title': ['acceptable', 'acceptable', 'not acceptable', 'acceptable', 'not acceptable', 'acceptable', 'not acceptable', 'acceptable', 'acceptable', 'acceptable'],
'colour': ['blue', 'blue', 'blue', 'green', 'green', 'blue', 'green', 'blue', 'blue', 'green'],
'class': ['A', 'B', 'B', 'A', 'B', 'A', 'A', 'A', 'A', 'B']}
df = pd.DataFrame(data, columns=['participant', 'step_name', 'title', 'colour', 'class'])
它看起來像:
+----+---------------+-------------+----------------+----------+---------+
| | participant | step_name | title | colour | class |
|----+---------------+-------------+----------------+----------+---------|
| 0 | 100 | first | acceptable | blue | A |
| 1 | 101 | first | acceptable | blue | B |
| 2 | 102 | second | not acceptable | blue | B |
| 3 | 103 | third | acceptable | green | A |
| 4 | 104 | second | not acceptable | green | B |
| 5 | 105 | first | acceptable | blue | A |
| 6 | 106 | first | not acceptable | green | A |
| 7 | 107 | first | acceptable | blue | A |
| 8 | 108 | second | acceptable | blue | A |
| 9 | 109 | third | acceptable | green | B |
+----+---------------+-------------+----------------+----------+---------+
現在我想使每一行計算每個重複的變量,對聚集的數據集,其我目前正在設法沿着兩個變量(step_name
和title
)做如下:
count_df = df[['participant', 'step_name', 'title']].groupby(['step_name', 'title']).count()
count_df = count_df.unstack()
count_df.fillna(0, inplace=True)
count_df.columns = count_df.columns.get_level_values(1)
count_df
+--------+--------------+------------------+
| | acceptable | not acceptable |
|--------+--------------+------------------|
| first | 4 | 1 |
| second | 1 | 2 |
| third | 2 | 0 |
+--------+--------------+------------------+
現在,我想要有一組額外的列,其中包含其他變量(colour
和class
)的值 - 基本上,我想對這些變量進行分組然後散堆,但不知道如何處理它有兩個以上的變量。最後,我想對我的決賽桌看起來像這樣:
+------+------+--------+--------------+------------------+
|class |colour| step | acceptable | not acceptable |
|----------------------+--------------+------------------|
| A | blue | first | 3 | 0 |
| B | blue | first | 1 | 0 |
| A |green | first | 0 | 1 |
| B |green | first | 0 | 0 |
| A | blue | second | 1 | 0 |
| B | blue | second | 0 | 1 |
| A |green | second | 0 | 0 |
| B |green | second | 0 | 1 |
| A |blue | third | 0 | 0 |
| B |blue | third | 0 | 0 |
| A |green | third | 1 | 0 |
| B |green | third | 1 | 0 |
+------+------+--------+--------------+------------------+
如何重塑我的數據,因此它看起來像我的最後一個例子?我仍然使用散堆和分組功能嗎?
謝謝!看起來'rename_axis'位給我一個錯誤,但是'TypeError:必須通過一個索引來重命名' – orange1
這是'pandas 0.18.0'中的新函數,你可以忽略它。並使用'df.columns.name = None' – jezrael