如何在Pandas中的特定索引之前获取所有行?

时间:2015-07-09 10:10:11

标签: python pandas

我正在阅读一个xlsx文件,我希望每一行都能根据之前的行创建列。

import pandas as pd
import numpy as np

def get_total(x):
    name = x["NAME"]
    city = x["CITY"]
    index = x.index
    records = df[df.index < index) & (df["NAME"] == name) & (df["CITY"] == city)]
    return records.size[0]

data_filename = "data.xslx"
df = pd.read_excel(data_filename, na_values=["", " ", "-"])
df["TOTAL"] = df.apply(lambda x: get_total(x), axis=1)

get_total函数是我想要实现的一个简单示例。

我可以使用df.reset_index(inplace=True)将数据框的索引作为列。我认为必须有更好的方法来获得一行的索引。

1 个答案:

答案 0 :(得分:0)

您可以像这样重写您的功能:

def get_total(x):
    name = x["NAME"]
    city = x["CITY"]
    index = x.name
    records df.loc[0:index]
    return records.loc[(records['NAME'] == name) & (records['CITY']==city)].size

name属性是当前行索引值