Python Pandas-迭代数据帧行并更新df(一行代码)
具有以下代码。 场景描述: 迭代数据帧,使URL列表发送GET请求。最初创建3个新列,并根据上一个get请求的结果进行更新 问题: 有没有办法在一行代码中写入3“df.set_值” 非常感谢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
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?实际上,你可以省略这一部分。。我最感兴趣的是如何把最后三行写成一行。可能是一个问题吗?非常感谢,工作正常。非常感谢,工作正常