Python Pandas DataFrame:如何在索引*和*列中按标签(str)定位元素?



刚刚看到这个: http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated

显然,.ix()运算符现已弃用。想知道如何做这样的事情:

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}, index=pd.DatetimeIndex(['2017-01-01', '2017-01-03', '2017-01-05']))
wanted_int_index = df.index.get_loc('2017-01-04', method='ffill') # index_id = 2
wanted_str_column = 'a'
value = df.ix[wanted_int_index, wanted_str_column] # value = 2
print(value)
# 2

我的理解是,.loc()不包括索引和列的标签(str),而.iloc()索引和列都不包括位置(int)。我在这里缺少用法吗?

loc应该适用于非日期时间索引。

import pandas as pd
import numpy as np
data = np.random.rand(10)
df = pd.DataFrame(data, index=range(10),columns=['A'])
print(df.loc[1,'A']) #this works

对于日期时间,就像您一样,您需要使用它们进行索引。即,

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}, 
index=pd.DatetimeIndex(['2017-01-01', '2017-01-03', '2017-01-05']))
wanted_int_index = df.index.get_loc('2017-01-04', method='ffill') # index_id = 2
wanted_str_column = 'a'
value = df.loc[df.index[wanted_int_index], wanted_str_column] # value = 2
print(value) #this works

最新更新