相关疑难解决方法(0)

如何透视数据框

  • 什么是枢轴?
  • 如何转动?
  • 这是一个支点吗?
  • 长格式到宽格式?

我见过很多关于数据透视表的问题.即使他们不知道他们询问数据透视表,他们通常也是.几乎不可能写出一个规范的问题和答案,其中包含了旋转的所有方面....

......但是我要试一试.


现有问题和答案的问题在于,问题通常集中在OP难以概括以便使用一些现有的良好答案的细微差别.但是,没有一个答案试图给出全面的解释(因为这是一项艰巨的任务)

从我的谷歌搜索中查看一些示例

  1. 如何在Pandas中透视数据框?
    • 好问答.但答案只回答了具体问题,几乎没有解释.
  2. pandas将表转移到数据框
    • 在这个问题中,OP关注的是枢轴的输出.即列的外观.OP希望它看起来像R.这对熊猫用户来说并不是很有帮助.
  3. pandas转动数据框,重复行
    • 另一个体面的问题,但答案集中在一种方法,即 pd.DataFrame.pivot

因此,每当有人搜索时,pivot他们会得到零星的结果,而这些结果可能无法回答他们的具体问题.


建立

您可能会注意到,我明显地将我的列和相关列值命名为与我将如何在下面的答案中进行调整相对应.请注意,以便熟悉哪些列名称可以从哪里获得您正在寻找的结果.

import numpy as np
import pandas as pd
from numpy.core.defchararray import add

np.random.seed([3,1415])
n = 20

cols = np.array(['key', 'row', 'item', 'col'])
arr1 = (np.random.randint(5, size=(n, 4)) // [2, 1, 2, 1]).astype(str)

df = pd.DataFrame(
    add(cols, arr1), columns=cols
).join(
    pd.DataFrame(np.random.rand(n, 2).round(2)).add_prefix('val')
)
print(df)

     key   row   item   col  val0  val1
0   key0  row3  item1  col3  0.81  0.04
1   key1 …
Run Code Online (Sandbox Code Playgroud)

python pivot group-by pandas pandas-groupby

296
推荐指数
4
解决办法
2万
查看次数

Python Pandas计算和总结特定条件

是否有单个函数在pandas中执行SUMIF的等价物,它是特定条件的总和,COUNTIF是从Excel计算特定条件的值?

我知道可以使用许多多步功能

例如,sumif我可以使用(df.map(lambda x: condition), or df.size())然后使用.sum()

因为countif我可以使用(groupby functions和寻找我的答案或使用过滤器和.count())

在您输入条件和数据框并获得总和或计算结果时,是否有简单的一步过程来执行这些功能?

python sum pandas

55
推荐指数
3
解决办法
15万
查看次数

在多个条件的多个列的pandas python中的COUNTIF

我有一个数据集,其中我试图确定每个人的风险因素的数量.所以我有以下数据:

Person_ID  Age  Smoker  Diabetes
      001   30       Y         N
      002   45       N         N
      003   27       N         Y
      004   18       Y         Y
      005   55       Y         Y
Run Code Online (Sandbox Code Playgroud)

每个属性(年龄,吸烟者,糖尿病)都有自己的条件来确定它是否是一个风险因素.因此,如果年龄> = 45,那么这是一个风险因素.吸烟者和糖尿病患者如果是"Y"则是危险因素.我想要的是添加一个列,根据这些条件为每个人增加风险因素的数量.所以数据看起来像这样:

Person_ID  Age  Smoker  Diabetes  Risk_Factors
      001   30       Y         N             1
      002   25       N         N             0
      003   27       N         Y             1
      004   18       Y         Y             2
      005   55       Y         Y             3
Run Code Online (Sandbox Code Playgroud)

我有一个我在Excel中愚弄的样本数据集,我在那里的方式是使用COUNTIF公式,如下所示:

=COUNTIF(B2,">45") + COUNTIF(C2,"=Y") + COUNTIF(D2,"=Y")

但是,我将使用的实际数据集对于Excel来说太大了,所以我正在学习python的pandas.我希望我能提供一些我已经尝试过的例子,但坦率地说,我甚至不知道从哪里开始.我查看了这个问题,但它并没有真正解决如何使用来自多列的不同条件将其应用于整个新列.有什么建议?

python dataset pandas

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

pandas ×3

python ×3

dataset ×1

group-by ×1

pandas-groupby ×1

pivot ×1

sum ×1