簡體   English   中英

如何將python for循環的輸出插入excel列?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM