我有一个带有时间长度数据的pandas DataFrame,以秒为单位.长度从几秒到几个月不等,因此在记录后采用直方图很方便,因为它更好地覆盖了范围.这是一个示例代码
%matplotlib inline
import numpy as np
import pandas as pd
x=np.random.lognormal(mean=10, sigma=1, size=10000)
df=pd.DataFrame(x, range(10000), columns=['timeLength'])
np.log10(df.timeLength).hist()
Run Code Online (Sandbox Code Playgroud)
但是,x轴上的标签是按比例缩放的.有没有办法把它们作为10 ^ 1等等.或者甚至更好,如果我可以把它们放在1秒,10秒,1分钟,10分钟,1小时,1天等等.
如果我有一个函数f要多次应用于一组列,那么更Pythonic 的方法是什么?现在,我正在做的就是这个。
newdf=df.groupby(['a', 'b']).apply(lambda x: f(x, 1))
newdf.columns=['1']
newdf['2']=df.groupby(['a', 'b']).apply(lambda x: f(x, 2))
newdf['3']=df.groupby(['a', 'b']).apply(lambda x: f(x, 3))
newdf['4']=df.groupby(['a', 'b']).apply(lambda x: f(x, 4))
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来解决它?
谢谢,