我正在阅读一个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)
将数据框的索引作为列。我认为必须有更好的方法来获得一行的索引。
答案 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
属性是当前行索引值