我有一个 Python 代码,可以从第 3 方 API 提取数据。下面是代码。
for sub in sublocation_ids:
city_num_int = sub['id']
city_num_str = str(city_num_int)
city_name = sub['name']
filter_text_new = filter_text.format(city_num_str)
data = json.dumps({"filters": [filter_text_new], "sort_by":"fb_tw_and_li", "size":200, "from":1580491663000, "to":1588184960000, "content_type":"stories"})
r = requests.post(url = api_endpoint, data = data).json()
if r['articles'] != empty_list:
articles_list = r["articles"]
time.sleep(5)
articles_list_normalized = json_normalize(articles_list)
df = articles_list_normalized
df['publication_timestamp'] = pd.to_datetime(df['publication_timestamp'])
df['publication_timestamp'] = df['publication_timestamp'].apply(lambda x: x.now().strftime('%Y-%m-%d'))
df['citystate'] = city_name
df = df.drop('has_video', 1)
df.to_excel(writer, sheet_name = city_name)
writer.save()
现在city_num_int = sub['id']
是不同城市的唯一ID。现在,API 会为少数城市返回“视频”列,而不会为其他城市返回“视频”列。我想在将视频列写入 Excel 文件之前将其删除。
我能够使用 df.drop 删除“has_video”列,因为该列存在于每个城市数据拉取中。但是如何有条件地删除“视频”列,因为它只存在于少数城市。
最佳答案
您可以忽略 Dataframe.drop 引发的错误:
df = df.drop(['videos'], axis=1, errors='ignore')
另一种方法是首先检查 DF 中是否存在列,然后再将其删除
引用号:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html
关于python - 如果列存在于 df 中,如何根据条件删除 Pandas 中的列数据框 (df)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61524091/