【问题标题】:pandas: get the value of the index for a row?pandas:获取一行的索引值?
【发布时间】:2016-10-12 17:33:00
【问题描述】:

我有一个数据框:

                 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

更新:这与询问如何获取系列索引的名称相同,但措辞不同。此外,虽然 answer 与另一个问题相同,但 question 并不相同!具体来说,当人们谷歌搜索“pandas index of row”而不是“pandas name of series”时,会发现这个问题。

【问题讨论】:

标签: python pandas


【解决方案1】:
for idx, row in df.iterrows():

为每一行返回一个Series,其中idx 是您正在迭代的行的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 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

您可以了解更多信息here

【讨论】:

    【解决方案2】:

    使用此函数遍历任何值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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2017-10-12
      • 2020-07-29
      • 2014-03-15
      • 2019-11-26
      • 2019-05-10
      相关资源
      最近更新 更多