【问题标题】:panda adding Iteratively Add Columns to a Dataframe熊猫将迭代添加列添加到数据框
【发布时间】:2021-07-30 01:42:49
【问题描述】:

我想将变量节点保存到每一行,每一行都有不同的节点值

//这一行我想将变量节点添加到列UPU,但目前它只复制最新的节点变量并保存到所有行相同的值。

制作方法

current result 

No. KP      UPU
88888888    tidak berjaya
66666666    tidak berjaya
55555555    tidak berjaya
expected result
No. KP      UPU
88888888    tidak berjaya
66666666    tahniah
55555555    harap maaf
import pandas as pd
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pandas import ExcelWriter


excel_file = 'upu6.csv'
students = pd.read_csv(excel_file, dtype={'No. KP': object})
# print (students.head())
# writer = pd.ExcelWriter('outputUpu.xlsx')


options = Options()
    # options.add_argument("user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\")
options.headless = False
browser = webdriver.Chrome(executable_path=r'C:\chromedriver.exe', options=options) # Your webdriver path

for index,row in students.iterrows():
    nokp = (row["No. KP"])
    browser.get("https://jpt.unimas.my/semakKeputusanSPM.jsp")
    ic = browser.find_element_by_id('vNOKP')
    ic.send_keys(nokp)

    browser.find_element_by_id('bMASUK').click()

    result = BeautifulSoup(browser.page_source, "html.parser")

    for node in result.find_all(text=lambda t: t and any(x in t for x in ['TIDAK BERJAYA', 'TAHNIAH', 'HARAP MAAF. TIADA REKOD PERMOHONAN'])):
        
        print(row['No. KP'] +" "+node)
        //this line I want to add variable node to column UPU, but currently it only copy the 
        //latest node variable and save to all row
        students['UPU'] = node

    
    

students.to_csv('data.csv')

【问题讨论】:

    标签: python pandas selenium


    【解决方案1】:

    您可以使用.at() 定位您想要的单元格并更改其值

    首先将No. KP 设置为数据帧的索引

    students.set_index('No. KP')
    

    然后你可以使用索引和列名来定位单元格

    students.at[row['No. KP'], ['UPU']] = node
    

    【讨论】:

    • students.at(row['No.KP'], ['UPU']) = node ^ SyntaxError: can't assign to function call
    • 更新了代码,括号错字见谅
    • 它更新下一列,但仍然在上面显示数据框,请参阅此结果文件 [链接]pasteimg.com/images/2021/07/30/Untitled.png 我希望它在第二列更新它
    • 因为现在索引列还是default那个,所以你需要设置No. KP作为dataframe的索引列,可以通过students.set_index('No. KP')来设置
    猜你喜欢
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2023-02-09
    • 2017-08-21
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多