python - pandas 中的 dcast 和聚合长度

标签 python pandas

我来自 R 背景,所以努力实现我可以在 R 中轻松实现的目标,我有以下 pandas 数据框。

ID   credit_active    credit_currency      credit_type
1    Active           Dollars              Home
1    Closed           Dollars              Home
1    Active           Euro                 Home
2    Active           Dollars              Home
2    Closed           Dollars              Home
2    Active           Euro                 Home

我想要以下格式的数据

ID     Active    Closed     Dollars     Euro     Home
1      2         1          2           1        3
2      2         1          2           1        3

我可以使用 R 中的简单命令来实现这一点,如下所示,

dcast(melt(setDT(bureau), id.var = 'ID'), ID ~ value)

我怎样才能做同样的事情 Pandas ?

最佳答案

使用meltgroupby ,合计size最后由 unstack reshape :

df = df.melt('ID').groupby(['ID', 'value']).size().unstack(fill_value=0)

另一个解决方案 pivot_table :

df = df.melt('ID').pivot_table(index='ID', columns='value', aggfunc='size')

或者使用 crosstab :

df1 = df.melt('ID')
df = pd.crosstab(df1['ID'], df1['value']) 
<小时/>
print (df)
value  Active  Closed  Dollars  Euro  Home
ID                                        
1           2       1        2     1     3
2           2       1        2     1     3

关于python - pandas 中的 dcast 和聚合长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51607727/

相关文章:

python - 标准化 Python Pandas 数据框中的某些列?

python - 使用嵌套字典填充缺失值

python - LabelEncoder 指定 DataFrame 中的类

python - 如何通过列的特定值将数据框拆分成多个部分?

Python Pandas - 结合数据框中的 2 行 - 有条件

python - 为什么 Cython 的 pip 安装需要这么长时间?

python - 当包装器具有相同参数时将 kwarg 传递给包装器函数

python - Pandas 在列中查找序列或模式

python - 将数据集拆分为两个非冗余的 numpy 数组?

Python - 从数据库查询表并在数据框中包含条件