我有一张用Pandas制作的桌子,如下所示:
Input:个
df = pd.DataFrame()
df["ID"] = [111,222,333]
df["TYPE"] = ["A", "A", "C"]
df["VAL_1"] = [1,3,0]
df["VAL_2"] = [0,0,1]
Df:
ID | TYPE | VAL_1 | VAL_2
-----|-------|-------|-------
111 | A | 1 | 0
222 | A | 3 | 0
333 | C | 0 | 1
我需要使用如下代码创建PIVOT_TABLE:
df_pivot = pd.pivot_table(df,
values=['VAL_1', 'VAL_2'],
index=['ID'],
columns='TYPE',
fill_value=0)
df_pivot.columns = df_pivot.columns.get_level_values(1) + '_' + df_pivot.columns.get_level_values(0)
df_pivot = df_pivot.reset_index()
Df_Pivot(上述代码的结果):
Requirements:个
- 输入DF在"TYPE"列中应具有下列值:A、B、C.
- 然而,输入df是SQL中某些查询的结果,所以有时"type"列中可能缺少一些值(A、B、C).
- 100
Output:个 我需要下面这样的东西:
ID | A_VAL_1 | C_VAL_1 | A_VAL_2 | C_VAL_2 | B_VAL_1 | B_VAL_2 |
---|---|---|---|---|---|---|
111 | 1 | 0 | 0 | 0 | 0 | 0 |
222 | 3 | 0 | 0 | 0 | 0 | 0 |
333 | 0 | 0 | 0 | 0 | 0 | 0 |
正如您可以看到的,值"B"不在列"type"的输入df中,因此在df_vot中创建了用"B"(B_val_1,B_val_2)填充0的列.
我如何在Python Pandas中做到这一点?