我有以下循环,该循环根据输入数据帧生成多行:
for _, value in df.iterrows():
var1 = value['Sales']
var2 = value['Income']
seg1 = value['segment']
flag1 = 'up' if var1>0 else 'down'
flag2 = 'up' if var2>0 else 'down'
print(f"{seg1} Sales {flag1} {var1}% vs LY while Total income {flag2} {var2}% vs LY creating leverage")
输出
A Sales up 184.37% vs LY while Total income up 224.24% vs LY creating leverage
B Sales up 45.42% vs LY while Total income up 176.79% vs LY creating leverage
有没有一种方法可以根据上述循环生成的输出行来创建新的数据帧。
预期的输出1:
df:
String
0 A Sales up 184.37% vs LY while Total income up 224.24% vs LY creating leverage
1 B Sales up 45.42% vs LY while Total income up 176.79% vs LY creating leverage
预期的输出2:
df:
String
0 A Sales up 184.37% vs LY while Total income up 224.24% vs LY creating leverage; B Sales up 45.42% vs LY while Total income up 176.79% vs LY creating leverage
我尝试了以下方法,但是它不正确或语法错误:
column_names = ['String']
df= pd.DataFrame(columns = column_names)
df= pd.DataFrame({'Insight': c_1}, index=[0])
答案 0 :(得分:1)
要充实@Cedroc Zoppolo的评论,这里是带有f字符串的最小示例。
import pandas as pd
df = pd.DataFrame({'Sales': [10, 20], 'Income': [20, -30]})
def description(sales, income):
return f'Sales up {sales}% while Total income {"up" if income > 0 else "down"} {income}%'
df['descr'] = df.apply(lambda x: description(x['Sales'], x['Income']), axis=1)
输出:
Sales Income descr
0 10 20 Sales up 10% while Total income up 20%
1 20 -30 Sales up 20% while Total income down -30%