草庐IT

pyhton_Pandas

全部标签

python - 为什么在 Pandas 数据框中应用有时并不比 for 循环快?

在大多数情况下,apply似乎可以加速dataframe上的操作过程,但是,当我使用apply时,我没有发现加速。这是我的例子;我有一个包含两列的数据框:>>>dfindexcol1col2110202203033040我想做的是通过在col1上实现函数R(x)来计算数据框中每一行的值,结果将除以col2中的值。例如,第一行的结果应该是R(10)/20。这是我的函数,将在apply中调用:def_f(input):returnR(input['col1'])/input['col2']然后我在apply中调用_f:df.apply(_f,axis=1)但是,我发现在这种情况下,appl

python - 如何通过 pandas 中的 groupby 输出来填充 na?

我有一个包含4列(A、B、C、D)的数据框。D有一些NaN项。我想用具有相同A、B、C值的D的平均值填充NaN值。例如,如果A、B、C、D的值分别是x、y、z和Nan,那么我想将NaN值替换为A值所在行的D的平均值,B,C分别是x,y,z。 最佳答案 df['D'].fillna(df.groupby(['A','B','C'])['D'].transform('mean'))会比apply更快In[2400]:dfOut[2400]:ABCD01111.01111NaN21113.033335.0In[2401]:df['D'].

忽略 NaN 的 Python pandas 独特值(value)

我想在groupby聚合中使用unique,但我不想在unique中使用nan结果。示例数据框:df=pd.DataFrame({'a':[1,2,1,1,np.nan,3,3],'b':[0,0,1,1,1,1,1],'c':['foo',np.nan,'bar','foo','baz','foo','bar']})abc01.00000foo12.00000NaN21.00001bar31.00001foo4nan1baz53.00001foo63.00001bar和groupby:df.groupby('b').agg({'a':['min','max','unique'],'c

python - 如何使用 Pandas 选择所有非 NaN 列和非 NaN 最后一列?

如果标题有点困惑,请原谅。假设我有test.h5。以下是使用df.read_hdf('test.h5','testdata')读取此文件的结果01234560123444111321NaNNaNNaN112234113672132900321211254332145NaNNaN我想选择最后一个非Nan列。我的预期结果是这样的03211900245我还想选择除最后一个非NaN列之外的所有列。我的预期结果大概是这样的。它可能在numpy数组中,但我还没有找到任何解决方案。012345601234441111122341136721323212112543321我在线搜索并找到df.iloc

python - 获取 Dataframe Pandas 中最高值的列和行索引

我想知道是否有办法找到数据框中最大值的位置(列和行索引)。因此,例如,如果我的数据框如下所示:ABCDE01009112618010671591220671562331251510584732872251如何使用Pandas获得如下所示的结果:[0,'A']? 最佳答案 使用np.argmaxNumPy的argmax可以提供帮助:>>>df.stack().index[np.argmax(df.values)](0,'A')步骤df.values是一个二维NumPy数组:>>>df.valuesarray([[100,9,1,12,

python - 绘制 datetime.date Pandas

我根据特定日历日期的一些值计数创建了一个pandas数据框。这是我的做法:time_series=pd.DataFrame(df['OperationDate'].value_counts().reset_index())time_series.columns=['date','count']基本上,它有两列,第一个“日期”是包含datetime.date对象的列,第二列“计数”只是整数值。现在,我想绘制一个散点图或一个KDE来表示日历日内的值变化,但是怎么做呢?我查看了数据框,它看起来井然有序,与我上面描述的完全一样。但是当我尝试时:time_series.plot(kind='kd

python - 使用 pandas Grouper 按十年开始对 DataFrame 进行分组

我有一个从01-01-1973到12-31-2014的日常观察数据框。一直在使用PandasGrouper,到目前为止,每个频率的一切都运行良好:我想按70年代、80年代、90年代等年代分组。我试着这样做importpandasaspddf.groupby(pd.Grouper(freq='10Y')).mean()但是,这会将它们分组为73-83、83-93等。 最佳答案 pd.cut还可以指定具有指定开始年份的常规频率。importpandasaspddfdateval01970-01-0100:01:18111979-12-3

python - 从 Pandas 的日期时间变量中删除时间?

我有一个变量,包含30万strip日期的记录,日期看起来像这样2015-02-2112:08:51从那天起我想删除时间日期变量的类型是pandas.core.series.series这是我试过的方法fromdatetimeimportdatetime,datedate_str=textdata['vfreceiveddate']format_string="%Y-%m-%d"then=datetime.strftime(date_str,format_string)一些随机错误上面代码中textdata是我的datasetname,vfreceiveddate是一个由日期组成的变量我

python - Pandas 数据精度

这个问题在这里已经有了答案:Howtoroundvaluesonlyfordisplayinpandaswhileretainingoriginalonesinthedataframe?(1个回答)关闭4年前。默认情况下,数据框中的数值最多只存储6位小数。我如何获得完整的精度。例如34.98774564765存储为34.987746。我确实想要完整的值(value)。并且0.00000565存储为0..除了将格式应用于每个数据框之外,还有任何有助于保持精度的全局设置。谢谢

python - 如何使用 Python Pandas 创建 'yyyymmdd' 格式的日期字符串列表?

我想要一个日期范围列表,其中每个元素都是'yyyymmdd'格式字符串,例如:['20130226','20130227','20130228','20130301','20130302'].我可以使用pandas来做到这一点:>>>pandas.date_range('20130226','20130302')[2013-02-2600:00:00,...,2013-03-0200:00:00]Length:5,Freq:D,Timezone:None但它是DatetimeIndex,我需要做一些额外的格式转换,那么如何以一种简洁的方式做到这一点呢? 最佳