python - 如果列存在于 df 中,如何根据条件删除 Pandas 中的列数据框 (df)?

标签 python python-3.x pandas dataframe

我有一个 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/

相关文章:

python - 具有多个输入和多个输出列的 Pandas 应用、滚动、分组

python - Pandas + scikit-learn K-means 无法正常工作 - 将所有数据帧行视为一个大的多维示例

python - python中如何使用__iter__动态创建对象

python - 如何在Python中对两个列表路径的字符串进行排序?

python - 使用 Python 将数据字节 append 到二进制文件

python - 索引是否使 Pandas 数据帧切片更快?

python - 在python中下载文件

python - 遵循 Head First Python 2nd edition 时的 Pytest-pep8 问题

python - 为什么 OrderedDict 的值不相等?

python - Pandas 多索引到 csv 文件