pandas:如何获取一行的索引值?

14

我有一个数据框:

                 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

更新:这与询问如何获取系列的索引名称相同,但措辞不同。虽然答案与另一个问题相同,但问题不同!具体而言,当人们通过谷歌搜索“pandas行的索引”而不是“pandas系列的名称”时,将会找到这个问题。


可能是重复的问题:如何从Series中获取DataFrame的索引? - root
2个回答

22
for idx, row in df.iterrows():

当您迭代遍历时,idx 是行的 index,每一行都会返回一个 Series。您可以简单地执行以下操作:

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 idx, row in df.iterrows():
    print(idx, 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

你可以在这里了解更多相关信息。


0

使用此代码迭代任何值 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接