[英]How to insert output of a python for loop into an excel column?
我正在尝试使用 for 循环在 Excel 电子表格的目标列中填充数据。 目标列已生成,但来自 for 循环的信息不会打印到 excel 文件中。
import pandas as pd
aasb_scores = pd.read_excel ('/Users/nnamdiokoli/Library/Containers/com.microsoft.Excel/Data/Desktop/AASB Scoring PivotTable Example.xlsx',
index=False)
aasb_scores['Average'] = (aasb_scores['Q1'] +
aasb_scores['Q2']+ aasb_scores['Q3'] +
aasb_scores['Q4'] + aasb_scores['Q5'])/5.00
aasb_scores.head(10)
def finalround():
for i in aasb_scores['Average']:
if i >= 3:
print('Final Round')
else:
print('cut')
aasb_scores['Moving on?'] = finalround()
aasb_scores.to_excel('/Users/nnamdiokoli/Library/Containers/com.microsoft.Excel/Data/Desktop/AASB Scoring PivotTable Example.xlsx',
index=False)
print()
仅用于在屏幕上显示,而不用于放入变量或任何其他地方。
您应该使用return "Final Round"
并return "cut"
。
但是对于pandas
你应该使用它的函数而不是for
-loop - 即。 apply()
。
import pandas as pd
import random
df = pd.DataFrame({'Average': [random.randint(0,5) for _ in range(10)]})
def finalround(value):
if value >= 3:
return 'Final Round'
else:
return 'cut'
df['Moving on?'] = df['Average'].apply(finalround)
print(df)
或更短的lambda
import pandas as pd
import random
df = pd.DataFrame({'Average': [random.randint(0,5) for _ in range(10)]})
df['Moving on?'] = df['Average'].apply(lambda x: 'Final Round' if x>=3 else 'cut')
print(df)
最终您可以创建列'Moving on?'
使用默认值'cut'
和稍后过滤要在其中设置'Final Round'
import pandas as pd
import random
df = pd.DataFrame({'Average': [random.randint(0,5) for _ in range(10)]})
df['Moving on?'] = 'cut'
df['Moving on?'][ df['Average'] >= 3 ] = 'Final Round'
print(df)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.