我经常对超过1500万行的数据帧执行pandas操作,我希望能够访问特定操作的进度指示器。
例如,在类似于:
df_users.groupby(['userID', 'requestDate']).apply(feature_rollup)
其中feature_rollup
是一个包含许多DF列并通过各种方法创建新用户列的函数。对于大数据帧,这些操作可能需要一段时间,所以我想知道是否可以在iPython笔记本中提供基于文本的输出,以更新我的进度。
到目前为止,我已经尝试了Python的规范循环进度指示器,但它们并没有以任何有意义的方式与pandas交互。
这也许是需要添加到库中的东西吗?
由于流行的需求,我在tqdm
中添加了pandas
支持(pip install“tqdm>=4.9.0”
)。与其他答案不同,这不会显著降低熊猫的速度--下面是DataFrameGroupBy.progress_apply
的一个示例:
import pandas as pd
import numpy as np
from tqdm import tqdm
# from tqdm.auto import tqdm # for notebooks
df = pd.DataFrame(np.random.randint(0, int(1e8), (10000, 1000)))
# Create new `pandas` methods which use `tqdm` progress
# (can use tqdm_gui, optional kwargs, etc.)
tqdm.pandas()
# Now you can use `progress_apply` instead of `apply`
df.groupby(0).progress_apply(lambda x: x**2)
如果您对它的工作原理感兴趣(以及如何为自己的回调修改它),请参阅github上的示例、pypi上的完整文档,或者导入模块并运行help(tqdm)
。其他支持的函数包括map
、applymap
、aggreat
和transform
。
编辑
df_users.groupby(['userID', 'requestDate']).apply(feature_rollup)
与:
from tqdm import tqdm
tqdm.pandas()
df_users.groupby(['userID', 'requestDate']).progress_apply(feature_rollup)
注意:tqdm<=v4.8:对于4.8以下版本的tqdm,您必须执行以下操作,而不是tqdm.pandas()
:
from tqdm import tqdm, tqdm_pandas
tqdm_pandas(tqdm())
问题内容: 我在Python 2.7中的Pandas DataFrame中具有以下内容: 我正在寻找计算数据帧中连续行之间的距离。输出应如下所示: 我尝试如下进行调整: 但是,出现以下错误: 此错误已通过MaxU的注释修复。修复后,此计算的输出没有意义-距离近8000 km: 根据: 这个在线计算器:如果我使用Latitude1 = 74.166061,Longitude1 = 30.512811
问题内容: 我有一个熊猫数据框,如下所示: 我想按它排序,但该列只是一个。 我试图将列设置为日期对象,但是遇到了一种格式不需要的格式的问题。所需的格式为等。 因此,现在我试图找出如何使numpy将“美国”日期转换为ISO标准,以便可以使它们成为日期对象,以便可以对它们进行排序。 我该如何将这些美国日期转换为ISO标准,或者我在熊猫中缺少更直接的方法? 问题答案: 您可以用来转换为日期时间对象。它带
问题内容: 在pandas数据框中有一个datetime列,其值如下: 我想知道如何舍入这些值,摆脱毫秒,仅将日期,小时,分钟和00表示为秒,如下所示: 问题答案: 使用与用于分钟设置: 我想将时间值更改为下一个值:
我正在尝试编写一个函数,如果< code > selection _ Match = = ' No Match ' then < code > DNB = score _ difference 0.02 然而,我返回相同的df,没有任何修改 虽然它应该回来 Lorem ipsum dolor sit amet,consecetur adipiscing elit,sed do eiusmod te
我试图使用pandas.to_datetime()将只包含小时、分钟和秒的日期列转换为日期时间形式。但是,它会自动添加年份和日期。我还尝试使用pandas.to_datetime(df["time"],format = % H:% M:% S ")dt . time,数据类型仍然是object。有没有什么方法可以变成不带年份和日期的datetime格式?
问题内容: 我有一个包含屏幕名称,tweet,收藏夹等的Pandas DataFrame。我想找到“ favcount”(我已经做过)的最大值,并返回该“ tweet”的屏幕名称 我似乎找不到任何东西,任何人都可以帮助我朝正确的方向发展吗? 问题答案: 使用 来获取最大价值的指标。那你可以用 编辑: 现已弃用,切换为