首页 > 解决方案 > 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

标签: pythonpandas

解决方案


我创建了一个带有“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

推荐阅读