pandas:获取一行索引的值?

Ric*_*ard 7 python 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
Run Code Online (Sandbox Code Playgroud)

如何遍历行,并获取每个行的索引值?

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)
Run Code Online (Sandbox Code Playgroud)

这就是我正在尝试的:

for i, row in df.iterrows():
    print row.index, row['cost']
Run Code Online (Sandbox Code Playgroud)

但我明白了:

Index([u'items', u'cost'], dtype='object') 3.34461552621
Run Code Online (Sandbox Code Playgroud)

更新:这与询问如何获取系列索引的名称相同,但措辞不同.虽然答案与另一个问题相同,但问题不一样!具体来说,这个问题将在人们谷歌搜索"pandas index of row"而不是"pandas name of series"时发现.

Ste*_*n G 9

for i, row in df.iterrows():
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

你可以在这里了解更多