刚看到这个: 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)。我在这里错过了一个用法吗?
答案 0 :(得分:0)
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