2016-10-12 88 views
3

我有一个数据帧:pandas:获取一行索引的值?

    cost  month para 
prod_code 
040201060AAAIAI 43 2016-01-01 0402 
040201060AAAIAJ 45 2016-02-01 0402 
040201060AAAIAI 46 2016-03-01 0402 
040201060AAAIAI 41 2016-01-01 0402 
040201060AAAIAI 48 2016-02-01 0402 

我怎么能遍历行,并获得每一个指标的价值?

d = { 'prod_code': ['040201060AAAIAI', '040201060AAAIAJ', '040201060AAAIAI', '040201060AAAIAI', '040201060AAAIAI', '040201060AAAIAI', '040301060AAAKAG', '040301060AAAKAK', '040301060AAAKAK', '040301060AAAKAX', '040301060AAAKAK', '040301060AAAKAK'], 'month': ['2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01'], 'cost': [43, 45, 46, 41, 48, 59, 8, 9, 10, 12, 15, 13] } 
df = pd.DataFrame.from_dict(d) 
df.set_index('prod_code', inplace=True) 

这就是我想:

for i, row in df.iterrows(): 
    print row.index, row['cost'] 

但我得到这个:

Index([u'items', u'cost'], dtype='object') 3.34461552621 

UPDATE:这是一样的,询问如何获取索引的名称为一系列,但措辞不同。另外虽然回答是一样的另一个问题,问题是不一样的!具体来说,这个问题会在人们谷歌搜索“熊猫索引行”时发现,而不是“熊猫名称系列”。

+0

的可能的复制[如何从一系列数据帧指数?(http://stackoverflow.com/questions/39988903/how-to -get-dataframe-index-from-series) – root

回答

2
for i, row in df.iterrows(): 

返回的每一行Series其中Series名称是通过迭代行的index 。你可以简单地做

d = { 'prod_code': ['040201060AAAIAI', '040201060AAAIAJ', '040201060AAAIAI', '040201060AAAIAI', '040201060AAAIAI', '040201060AAAIAI', '040301060AAAKAG', '040301060AAAKAK', '040301060AAAKAK', '040301060AAAKAX', '040301060AAAKAK', '040301060AAAKAK'], 'month': ['2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01'], 'cost': [43, 45, 46, 41, 48, 59, 8, 9, 10, 12, 15, 13] } 
df = pd.DataFrame.from_dict(d) 
df.set_index('prod_code', inplace=True) 
for i, row in df.iterrows(): 
    print row.name, row['cost'] 

040201060AAAIAI 43 
040201060AAAIAJ 45 
040201060AAAIAI 46 
040201060AAAIAI 41 
040201060AAAIAI 48 
040201060AAAIAI 59 
040301060AAAKAG 8 
040301060AAAKAK 9 
040301060AAAKAK 10 
040301060AAAKAX 12 
040301060AAAKAK 15 
040301060AAAKAK 13 

,你可以更多地了解它here

1

使用这种迭代的任何数值df.ix[row_value,col_value]寻找列索引使用此功能

def find_column_number(column_name): 
    x=list(df1.columns.values) 
    print column_name 
    col_lenth= len(x) 
    counter=0 
    count=[] 
    while counter<col_lenth: 
     if x[counter]==column_name: 
      count=counter 
     counter+=1 
    return count 
+0

如果这解决了你的查询然后接受答案 –