Python Pandas-迭代数据帧行并更新df(一行代码)

Python Pandas-迭代数据帧行并更新df(一行代码),python,pandas,dataframe,Python,Pandas,Dataframe,具有以下代码。 场景描述: 迭代数据帧,使URL列表发送GET请求。最初创建3个新列,并根据上一个get请求的结果进行更新 问题: 有没有办法在一行代码中写入3“df.set_值” 非常感谢 import pandas as pd, numpy as np d = {'ListOfURLs': ['URL1', 'URL2', 'URL3']} df = pd.DataFrame(data=d) #print(df) s = requests.session() s.post(login_u

具有以下代码。 场景描述:

迭代数据帧,使URL列表发送GET请求。最初创建3个新列,并根据上一个get请求的结果进行更新

问题: 有没有办法在一行代码中写入3“df.set_值”

非常感谢

import pandas as pd, numpy as np

d = {'ListOfURLs': ['URL1', 'URL2', 'URL3']}
df = pd.DataFrame(data=d)

#print(df)
s = requests.session()
s.post(login_url, login_data)
for index, row in df.iterrows():
    r = s.get(row['ListOfURLs'])
    r.status_code
    if r.status_code == 200:
        # Update Dataframe , create initially 3 new columns and update them based on the results from the previous get request
        df.set_value(index, 'Status Code', r.status_code)
        df.set_value(index, 'Result', '[OK]')
        df.set_value(index, 'Error', np.nan)
你可以做:

import pandas as pd
import requests
import numpy as np

d = {'ListOfURLs': ['https://stackoverflow.com/q/65060875/4001592',
                    'https://stackoverflow.com/q/65060875/4001592',
                    'https://stackoverflow.com/q/65060875/4001592']}
df = pd.DataFrame(data=d)

for index, row in df.iterrows():
    r = requests.get(row['ListOfURLs'])
    if r.status_code == 200:
        df.at[index, ['Status Code', 'Result', 'Error']] = (r.status_code, '[OK]', np.nan)

print(df)
输出

                                     ListOfURLs  Status Code Result  Error
0  https://stackoverflow.com/q/65060875/4001592        200.0   [OK]    NaN
1  https://stackoverflow.com/q/65060875/4001592        200.0   [OK]    NaN
2  https://stackoverflow.com/q/65060875/4001592        200.0   [OK]    NaN
不要使用:

自版本0.21.0以来已弃用:使用.at[]或.iat[]访问器 相反

请注意,原始问题中的一些细节被省略,以生成实际输出。

您可以执行以下操作:

import pandas as pd
import requests
import numpy as np

d = {'ListOfURLs': ['https://stackoverflow.com/q/65060875/4001592',
                    'https://stackoverflow.com/q/65060875/4001592',
                    'https://stackoverflow.com/q/65060875/4001592']}
df = pd.DataFrame(data=d)

for index, row in df.iterrows():
    r = requests.get(row['ListOfURLs'])
    if r.status_code == 200:
        df.at[index, ['Status Code', 'Result', 'Error']] = (r.status_code, '[OK]', np.nan)

print(df)
输出

                                     ListOfURLs  Status Code Result  Error
0  https://stackoverflow.com/q/65060875/4001592        200.0   [OK]    NaN
1  https://stackoverflow.com/q/65060875/4001592        200.0   [OK]    NaN
2  https://stackoverflow.com/q/65060875/4001592        200.0   [OK]    NaN
不要使用:

自版本0.21.0以来已弃用:使用.at[]或.iat[]访问器 相反


请注意,原始问题中的一些细节被省略以生成实际输出。

为什么不先提取数据,然后构建数据框架?数据将从cvs文件中提取,主要目标是根据GET请求的结果更新df。我正试图找出如何用一行代码来更新df。状态代码的值是多少!=200?实际上,你可以省略这一部分。。我最感兴趣的是如何将最后3行写入1行。可能是一个问题?为什么不先提取数据,然后构建数据帧?数据将从cvs文件中提取,主要目标是根据GET请求的结果更新df。我正试图找出如何用一行代码来更新df。状态代码的值是多少!=200?实际上,你可以省略这一部分。。我最感兴趣的是如何把最后三行写成一行。可能是一个问题吗?非常感谢,工作正常。非常感谢,工作正常