提取信息与熊猫一起使用

时间:2021-03-14 01:34:16

标签: pandas dataframe .loc

我有这个数据框:

列非空数据类型

0 nombre 74 非空对象

1 个制造者 - 74 个非空 - 对象

2 卡路里 -74 非空 -int64
3 蛋白质 -74 非空 -int64
4 grasa -74 非空 -int64
5 sodio -74 非空 -int64
6 fibra 饮食 -74 非空 -float64 7 碳水化合物 -74 非空 -float64 8 azúcar -74 非空 -int64
9 potasio -74 非空 -int64
10 种维生素矿物质 -74 非空 -int64

我正在尝试提取这样的信息:

cereal_df.loc[cereal_df['fabricante'] == 'Kelloggs', 'sodio']

输出是(很好,这就是我想在这种情况下提取的内容,对吗?)

2 260 3 140 6 125 16 290 17 90 19 140 21 220 24 125 25 200 26 0 27 240 37 170 38 170 43 150 45 190 46 220 47 170 50 320 55 210 57 0 59 290 63 70 64 230 名称:sodio,数据类型:int64

到目前为止,这就是我所需要的,但是当我尝试编写这样的函数时(为了获得信心):

def valor_medio_intervalo(fabricante, variable, confianza):
   subconjunto = cereal_df.loc[cereal_df['fabricante'] == fabricante, cereal_df[variable]]
   inicio, final  = sm.stats.DescrStatsW(subconjunto[variable]).zconfint_mean(alpha = 1 - confianza) 
   return inicio, final

然后我运行函数:

valor_medio_intervalo('Kelloggs', 'azúcar', 0.95)

输出为:


KeyError                                  Traceback (most recent call last)
<ipython-input-57-11420ac4d15f> in <module>()
      1 #TEST_CELL
----> 2 valor_medio_intervalo('Kelloggs', 'azúcar', 0.95)

7 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing)
   1296             if missing == len(indexer):
   1297                 axis_name = self.obj._get_axis_name(axis)
-> 1298                 raise KeyError(f"None of [{key}] are in the [{axis_name}]")
   1299 
   1300             # We (temporarily) allow for some missing keys with .loc, except in

KeyError: "None of [Int64Index([ 6,  8,  5,  0,  8, 10, 14,  8,  6,  5, 12,  1,  9,  7, 13,  3,  2,\n            12, 13,  7,  0,  3, 10,  5, 13, 11,  7, 12, 12, 15,  9,  5,  3,  4,\n            11, 10, 11,  6,  9,  3,  6, 12,  3, 13,  6,  9,  7,  2, 10, 14,  3,\n             0,  0,  6, -1, 12,  8,  6,  2,  3,  0,  0,  0, 15,  3,  5,  3, 14,\n             3,  3, 12,  3,  3,  8],\n           dtype='int64')] are in the [columns]"

我不明白发生了什么。 我感谢您的帮助或任何提示。 提前致谢

1 个答案:

答案 0 :(得分:1)

刚刚通过检查代码得到了答案:

def valor_medio_intervalo(fabricante, variable, confianza):
 subconjunto = cereal_df.loc[cereal_df['fabricante'] == fabricante,cereal_df[variable]]
 inicio, final  = sm.stats.DescrStatsW(subconjunto[variable]).zconfint_mean(alpha = 1 - 
    confianza) 
 return inicio, final

在行中

inicio, final  = sm.stats.DescrStatsW(subconjunto[variable]).zconfint_mean(alpha = 1 - 
    confianza)

(subconjunto[variable])

就是

(subconjunto)
相关问题