Я могу предложить два способа решения проблемы:
import pandas as pd
def calculate_rank(name, brand, year):
"""My mock way to calculate rank based on the three columns"""
rank = 0
if year == 2019:
rank += 1
else:
pass
rank += len(name)
rank += len(brand)
return rank
if __name__ == "__main__":
x = pd.DataFrame({
"Name": ["A", "AB", "AC", "D"],
"Brand": ["AAAA", "DDDDD", "BB", "Y"],
"Year": [2019, 2018, 2019, 2018]})
# Pandas official way to do it:
x["Rank"] = x.apply(lambda row: calculate_rank(row["Name"], row["Brand"], row["Year"]), axis=1)
print(x)
# Another not pandas way below, use the first one!
y = pd.DataFrame({
"Name": ["A", "AB", "AC", "D"],
"Brand": ["AAAA", "DDDDD", "BB", "Y"],
"Year": [2019, 2018, 2019, 2018]})
y["Rank"] = None
for i in range(len(y)):
print(len(y))
y["Rank"][i] = calculate_rank(y["Name"][i], y["Brand"][i], y["Year"][i])
print(y)
Дайте мне знать, если это помогло!