【问题标题】:Replace an attribute with percentage of two attributes in Python在Python中用两个属性的百分比替换一个属性
【发布时间】:2021-06-04 09:26:01
【问题描述】:

正如标题所说,我想计算两个属性的百分比,并将数据集的最后一个属性替换为新的百分比。

数据集如下:

dataset = pd.read_csv('2016-17-to-2018-19-immunizations.csv',encoding = "ISO-8859-1")

我目前的尝试是:

enrollment = newDataset.iloc[:,7:8]
count = newDataset.iloc[:,9:10]

newDataset.iloc[:,10:11] = count / enrollment

newDataset.to_csv(r'newDF.csv', index='None')

newDataset.head()

但是最后一个百分比属性并没有被新的百分比替换。

有什么导致我在这里做错了吗?

Edit-1 Dataset.csv(显示前 5 条记录):

SCHOOL_YEAR,SCHOOL_CODE,COUNTY,PUBLIC_PRIVATE,CITY,SCHOOL_NAME,REPORTED,ENROLLMENT,CATEGORY,COUNT,PERCENT
2016-2017,52749,MONTEREY,PRIVATE,PRUNEDALE,PRUNEDALE CHRISTIAN ACADEMY,Y,10,PBE,,
2016-2017,52749,MONTEREY,PRIVATE,PRUNEDALE,PRUNEDALE CHRISTIAN ACADEMY,Y,10,HEPB,,
2016-2017,52749,MONTEREY,PRIVATE,PRUNEDALE,PRUNEDALE CHRISTIAN ACADEMY,Y,10,DTP,,
2016-2017,52749,MONTEREY,PRIVATE,PRUNEDALE,PRUNEDALE CHRISTIAN ACADEMY,Y,10,POLIO,,
2016-2017,52749,MONTEREY,PRIVATE,PRUNEDALE,PRUNEDALE CHRISTIAN ACADEMY,Y,10,Up-To-Date,,

【问题讨论】:

  • 根据您显示的数据,您永远不会知道您的百分比计算是否有效,因为您的计数是0。将任何内容除以 0 将返回 NaN。还可以考虑创建一个minimal reproducible example,而不是使用您的数据图像。
  • @CameronRiddell 谢谢,但我将 0 除以某个值,例如对于第一种情况,它是 0/10,所以答案应该是“0”而不是“NaN”。我希望它澄清。关于数据集,您期望什么样的最小可重现示例。它是一个 csv 数据集。
  • @CameronRiddell 我添加了数据集示例。希望现在清楚了!
  • 哦,哇,我完全误读了您的代码。感谢您澄清并包括一些数据!尽管您提供的数据中的count 列似乎都不见了?应该是这样的吗?
  • @CameronRiddell 计数列是稀疏的。我正在使用 dataset.bfill() 向后填充值

标签: python pandas dataframe dataset


【解决方案1】:

使用样本的精简版Dataset.csv

SCHOOL_YEAR SCHOOL_CODE ENROLLMENT COUNT PERCENT
0 2016-2017 52749 10 0.0 NaN
1 2016-2017 52749 10 0.0 NaN
2 2016-2017 52749 10 3.0 NaN
3 2016-2017 52749 10 NaN NaN
4 2016-2017 52749 10 8.0 NaN

您可以像这样设置PERCENT 列:

df.PERCENT = df.COUNT / df.ENROLLMENT
SCHOOL_YEAR SCHOOL_CODE ENROLLMENT COUNT PERCENT
0 2016-2017 52749 10 0.0 0.0
1 2016-2017 52749 10 0.0 0.0
2 2016-2017 52749 10 3.0 0.3
3 2016-2017 52749 10 NaN NaN
4 2016-2017 52749 10 8.0 0.8

请注意,在这种情况下,PERCENT 列已经存在。如果目标列不存在(例如,RATIO),那么我们需要对目标变量使用括号表示法(例如,df['RATIO'] = df.COUNT / df.ENROLLMENT)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 2014-03-22
    • 2014-09-22
    相关资源
    最近更新 更多