Скажем, у вас есть фрейм данных:
import pandas as pd
sales = [{'account': 'Jones LLC', 'nuts': 150, 'bolts': 200, 'totalval': 140, 'Cur': 'pesos'},
{'account': 'Alpha Co', 'nuts': 200, 'bolts': 210, 'totalval': 215, 'Cur': 'euros'},
{'account': 'Blue Inc', 'nuts': 50, 'bolts': 90, 'totalval': 95 , 'Cur': 'pounds'}]
mydf = pd.DataFrame(sales)
И вы хотели бы создать строку, отмечающую прибыль месяца. Например:
"We made 140 pesos from Jones LLC. Wahoo!"
Моя первая попытка решить эту проблему состояла бы в том, чтобы взять строку шаблона с заполнителями и отформатировать ее с ежемесячными числами строка за строкой. Обратите внимание, что эти месячные числа являются целыми числами, а не строками.
celebstring = "We made amt Cur from Jones LLC. Woohoo!"
def createpr(inputdf):
for index, row in inputdf.iterrows():
filledstring = celebstring.replace("amt","{0}".format(str(row["totalval"]))).replace('Cur','{0}'.format(str(row['Cur'])))
inputdf['fullstring'] = filledstring
return inputdf
df2 = createpr(mydf)
Но когда вы запускаете этот код, поле 'fullstring' для ВСЕХ строк заполняется только значениями из последней строки. Фрейм данных выглядит следующим образом (обратите внимание, я удалил два столбца для удобства чтения):
sales = [{'account': 'Jones LLC','totalval': 140, 'Cur': 'pesos', 'fullstring': 'We got an order totaling 95 pounds selling parts wahoo!'},
{'account': 'Alpha Co','totalval': 215, 'Cur': 'euros', 'fullstring': 'We got an order totaling 95 pounds selling parts wahoo!'},
{'account': 'Blue Inc','totalval': 95 , 'Cur': 'pounds','fullstring': 'We got an order totaling 95 pounds selling parts wahoo!'}]
Как вы получаете функцию для замены значений в соответствии с соответствующими значениями в каждой строке?