我正在努力学习和理解这个问题背后的逻辑,我无法解释下面的问题。 如果我想用LOC分割数据帧,我可以用以下方法
dates=pd.date_range('20130101',periods=6)
df=pd.DataFrame(np.random.rand(6,4),index=dates,columns=list('ABCD'))
print(df.loc['20130102':'20130104',['A','B']]) (*)
一切都很好。 我不明白的是,如果在LOC的第二部分我可以输入列标题列表['a','B'],为什么我不能对行执行相同的操作? i、 e.以下操作不起作用
print(df.loc[['20130102','20130104'],['A','B']])
背后的逻辑是什么?我给LOC两行索引,两列标题,但它不会工作。对于列部分,列表是好的,而对于行部分则不是。 此外, 在LOC的第一部分(见*)中,行的索引可以用“:”访问,即从index1到index2='index1':'index2',但在LOC函数的第2部分中,我不能这样做: 这是行不通的:
print(df.loc['20130102':'20130104',['A':'C']])
我很乐意理解为什么这两行代码不起作用。你知道吗
谢谢。你知道吗
这段代码解释了在pandas中使用LOC访问数据(切片)的不同方法:
行范围列范围:
值行列范围:
行范围列值:
单一值:
结论:当使用范围时,不要把它放在[] 但是使用[]包含一个值列表。你知道吗
您需要将list的值转换为
datetime
,因为DatetimeIndex
,这意味着需要相同类型的list值和DataFrame的index/columns值,否则KeyError
:按索引/列的第一个和最后一个值选择
转换成
datetimes
是没有必要的,因为partial string indexing。你知道吗对于按范围选择仅删除列表
[]
用于选择列:选择日期时间的类似解决方案:
组合:
相关问题 更多 >
编程相关推荐