python - Python pandas - 如何从数据框中的列中获取数据以及来自另一列的数据
问题描述
我有一个数据框,并且在数据框中有一个值,我需要从不同的列中获取同一行中的值。在我的示例中,我需要从对应于 A1、A2 和 A3 的 Total 列中获取值。我做了如下:
df=(['A1', 140000],['A2', 100000],['A3', 400000])
df=pd.DataFrame({'A': ['A1', 'A2', 'A3'], 'Total': [14000, 10000, 40000]})
CA1 = df.loc[df['A']=='A1']['Total']
CA2 = df.loc[df['A']=='A2']['Total']
CT = df.loc[df['A']=='A3']['Total']
print(CA1)
print(CA2)
print(CT)
但我得到了这个结果,我只需要得到值(14000、10000、40000),我该怎么做?0 14000 名称:总计,dtype:int64 1 10000 名称:总计,dtype:int64 2 40000 名称:总计,dtype:int64
解决方案
我创建了一个带有“A4”元素的数据框(以显示过滤):
df = pd.DataFrame({'A': ['A1', 'A2', 'A3', 'A4'],
'Total': [14000, 10000, 40000, 1]})
df
然后我将“A”列转换为索引,将“A1”选择为(并包括)“A3”,转换为系列,然后转换为列表:
df.set_index('A').sort_index().loc['A1':'A3'].squeeze().to_list()
结果是:
[14000, 10000, 40000]
如果要将总计作为标量,请从更改.squeeze().to_list()
为.sum()
更新
您可以像这样获得总和。该函数squeeze()
将具有 1 列的数据框转换为系列。一个系列的总和是一个标量。
scalar = df.set_index('A').sort_index().loc['A1':'A3'].squeeze().sum()
print(scalar)
64000
推荐阅读
- angular - 如何使用 tsconfig 文件从构建中动态排除模块
- mysql - 使用 WHERE 清除数据库中的空白条目
- c# - 如何在 group by 子句结果集 EF Core 中包含零次出现
- numpy - 康达包错误?二进制不兼容
- activemq-artemis - 有没有办法在不重新启动代理的情况下添加和运行集群配置?
- python - 反向匹配参数
- swift - 滚动时collectionView单元格图像更改 - 快速 - 以编程方式
- php - 如何让 NumberFormatter::parse() 只解析实际的数字字符串?
- deep-learning - 关于Julia语言的深度学习快速入门(Knet.jl)
- google-play - PWA builder:如何使用 Android Package Options 更新现有应用程序