当前位置: 首页 > 知识库问答 >
问题:

选择一个pandas数据帧的1.6M行[重复]

宦树
2023-03-14
import pandas as pd
catalog = pd.read_csv('catalog.txt')
slim_list = []
for i in range(len(catalog)):
    if (pd.isna(catalog['z'][i]) == False and pd.isna(catalog['B'][i]) == False):
        slim_list.append(i)
slim_catalog = pd.DataFrame(columns = catalog.columns)
for j in range(len(slim_list)):
    data = (catalog.iloc[j]).to_dict()
    slim_catalog = slim_catalog.append(data, ignore_index = True)
pd.to_csv('slim_catalog.csv')

共有1个答案

颛孙嘉石
2023-03-14

这在熊猫身上是完全错误的做法。

首先,永远不要迭代某个范围,即在范围(len(catalog)):中为i执行,然后单独索引到行:catalog['z'][i]中,这是非常低效的。

其次,不要在循环中使用pd.dataframe.append创建pandas.dataframe,这是一个线性操作,因此整个过程将是二次时间。

catalog[catalog.loc[:, ['z', 'B']].notna().all(axis=1)].to_csv('slim_catalog.csv')
not_nan_zB = catalog.loc[:, ['z', 'B']].notna().all(axis=1)
catalog[not_nan_zB].to_csv('slim_catalog.csv')

 类似资料:
  • 假设我创建了一个熊猫数据帧 现在我正在运行一个像这样的选择 问题是:我如何将这个结果导出/保存到一个CSV文件? 预先默许 a

  • 这不是一个重复的问题,但类似于 根据pandas中列中的值从数据帧中选择行

  • 我想在指定的时间戳范围内从数据帧中选择行的子集。 下面是我所做的,但它似乎没有工作。我正在尝试选择发生在01/01/2019 01:00和01/01/2021 01:00之间的行子集。 非常感谢。

  • 在编程方面,我是一个新手,特别是熊猫。我也很抱歉,我问了一个已经在SF上提到的问题:我并不真正理解这个问题的现有答案。可能重复,但这个答案对新手来说很容易理解,如果不太全面的话。

  • 本文向大家介绍pandas 选择重复,包括了pandas 选择重复的使用技巧和注意事项,需要的朋友参考一下 示例 如果需要将值设置0为column B,则在columnA中的重复数据中,首先使用创建掩码Series.duplicated,然后使用DataFrame.ix或Series.mask: 如果需要反面罩使用~:            

  • 我正在尝试从多索引数据帧中仅使用一个索引来创建新的数据帧。 理想情况下,我想要这样的东西: 和: 基本上,我想删除除level之外的多索引的所有其他索引。有没有一个简单的方法可以做到这一点?