程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Pandas:如何解释多级列选择和值设置中的这种 .loc 行为大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Pandas:如何解释多级列选择和值设置中的这种 .loc 行为?

开发过程中遇到Pandas:如何解释多级列选择和值设置中的这种 .loc 行为的问题如何解决?下面主要结合日常开发的经验,给出你关于Pandas:如何解释多级列选择和值设置中的这种 .loc 行为的解决方法建议,希望对你解决Pandas:如何解释多级列选择和值设置中的这种 .loc 行为有所启发或帮助;

我正在尝试使用 .loc 为多级列数据框的某些单元格选择和设置值。但是我对得到的结果和错误感到困惑。

例如

@H_403_4@@H_496_6@my_List = [['Chicago','A',112,8],['Philly',252,19],['LA',411,12],['Chicago','B',12]] df1 = pd.DataFrame(columns=['City','Firm','employee','Revenue'],data=my_List) df1 = df1.set_index(['City','Firm']).unstack() df1

这会给我一个如下所示的数据框:

Pandas:如何解释多级列选择和值设置中的这种 .loc 行为

在这里,我尝试为两个带圆圈的单元格选择和设置值:

Pandas:如何解释多级列选择和值设置中的这种 .loc 行为

我很困惑是使用 df1.loc['LA','Revenue'] 还是 df1.loc['LA',['Revenue']]。前者给我结果

@H_403_4@Firm A 12 B 12 name: LA,dtype: int64

与后者相比,收益

@H_403_4@ Firm Revenue A 12 B 12 name: LA,dtype: int64

任何一种方法都允许我设置值。但是如果我按照第 2 级对列顺序进行排序,则会出现错误

@H_403_4@df2 = df1.sort_index(1,1) df2

在数据框看起来像这样

Pandas:如何解释多级列选择和值设置中的这种 .loc 行为

然后,如果我想用 df2.loc['LA','Revenue'] 设置值,它将不起作用。

@H_403_4@df2.loc['LA','Revenue'] = 5

我收到错误“TypeError: only Integer scalar arrays can be convert to a scalar index”,而另一种方法工作正常。

@H_403_4@df2.loc['LA',['Revenue']] = 2000 df2

Pandas:如何解释多级列选择和值设置中的这种 .loc 行为

所以我真的很好奇.loc中括号在选择多级索引/列时的作用以及为什么对多级列的一个级别进行排序会导致值设置失败。

作为记录,我在处理原始数据时遇到了不同的错误:

@H_403_4@dfn

Pandas:如何解释多级列选择和值设置中的这种 .loc 行为

@H_403_4@dfn.loc['NOK','order'] = 5

这给了我“ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()”

解决方法

 la A B for Revenue was 12 12. unstack remove the multiple key index.  set_index to city and firm,use loc to replace your  value,then unstack the dataframe for display 


 my_list = [['Chicago','A',112,8],['Philly',252,19],['LA',411,12],['Chicago','B',12]]
 
 df1 = pd.DataFrame(columns=['City','Firm','employee','Revenue'],data=my_list)
 df1 = df1.set_index(['City','Firm'])

 df1.loc[('LA','B'),'Revenue']=14
 df1.loc[('LA','A'),'Revenue']=13

  df1 = df1.unstack()
  print(df1)

  output
     employee      Revenue    
   Firm           A    B       A   B
   City                             
   Chicago      112  112       8   8
   LA           411  411      13  14
   Philly       252  252      19  19

大佬总结

以上是大佬教程为你收集整理的Pandas:如何解释多级列选择和值设置中的这种 .loc 行为全部内容,希望文章能够帮你解决Pandas:如何解释多级列选择和值设置中的这种 .loc 行为所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:.loc行为