- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 pandas 数据框 df
as
Date cost NC
20 5 NaN
21 7 NaN
23 9 78.0
25 6 80.0
现在我需要做的是填充缺失的日期,因此仅当前一行中有数字时才用值填充列 x
。那就是我想要这样的输出
Date cost NC
20 5 NaN
21 7 NaN
22 x NaN
23 9 78.0
24 x x
25 6 80.0
请参阅日期 22 丢失且 21 日 NC
丢失,因此在 22 日 cost
分配给 x 但 NC
分配给 NaN
。现在将 Date
列设置为 index
并将其reindex
设置为缺失值我可以到这里
Date cost NC
20 5.0 NaN
21 7.0 NaN
22 NaN NaN
23 9.0 78.0
24 NaN NaN
25 6.0 80.0
但我无法获得最终输出。如果你这样想,它就像 ffill()
但不是从上一行填充你必须把 x
放在这里。
我还有一个问题。这里我有一个像这样的数据框 df
Date type cost
10 a 30
11 a 30
11 b 25
13 a 27
在这里我也必须填补缺失值并像这样
Date type cost
10 a 30
11 a 30
11 b 25
12 a 30
12 b 25
13 a 27
如您所见,日期 11 有 2 个数据行,因此都被复制到 12。我为这个问题编写了这个程序
missing=[12]
for i in missing:
new_date=i
i-=1 #go to previous date
k=df[df["Date"] == i].index.tolist()[-1]+1 #index where to be filled
data=pd.DataFrame(df[df["Date"] == i].values,columns=df.columns)
data["Date"]=new_date
df=pd.concat([df.iloc[:k],data,df.iloc[k:]]).reset_index(drop=True)
现在对于大型数据集,上述程序需要花费大量时间,因为每次都必须找到索引并连接 3 个数据帧。有没有更好更有效的方法来解决这个问题?
最佳答案
我认为没有办法只填充“中间”值,但这里有一种方法(使用 ffill
、bfill
和 填充
):
In [11]: df1 # assuming Date is the index via df.set_index("Date")
Out[11]:
cost NC
Date
20 5 NaN
21 7 NaN
23 9 78.0
25 6 80.0
In [12]: df2 = df1.reindex(np.arange(20,27))
# 26 is sufficient, but let's see it working!
In [13]: df2
Out[13]:
cost NC
Date
20 5.0 NaN
21 7.0 NaN
22 NaN NaN
23 9.0 78.0
24 NaN NaN
25 6.0 80.0
26 NaN NaN
您不想填写“外部”NaN,这可以通过以下方式获得:
In [14]: df2.bfill().notnull() & df2.ffill().notnull()
Out[14]:
cost NC
Date
20 True False
21 True False
22 True False
23 True True
24 True True
25 True True
26 False False
现在,我们可以更新这些(如果它们用 fillna
更新):
In [15]: df2[df2.bfill().notnull() & df2.ffill().notnull()] = df2.fillna(0) # x = 0
In [16]: df2
Out[15]:
cost NC
Date
20 5.0 NaN
21 7.0 NaN
22 0.0 NaN
23 9.0 78.0
24 0.0 0.0
25 6.0 80.0
26 NaN NaN
要(部分地)回答第二个问题,IMO 在这种情况下从一个支点开始总是更好(这会给你一个更好的起点):
In [21]: df
Out[21]:
Date type cost
0 10 a 30
1 11 a 30
2 11 b 25
3 13 a 27
In [22]: df.pivot_table("cost", "Date", "type")
Out[22]:
type a b
Date
10 30.0 NaN
11 30.0 25.0
13 27.0 NaN
也许您希望从那里向前补位? (并在必要时展开)。
关于python - 填充 Pandas 数据框中缺失的中间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37821653/
我是 Javascript 的新手。由于一些遗留系统,目前我正在将一些 ES6 代码转换回 ES5 代码。我转换了以下代码: $row.find('.gridCellDetailAction') .
这是我的父类,它有 trigger 方法,即 public 方法: class BaseEffect { //properties and contructor... //other
我正在关注构建你的第一个区 block 链教程 (https://www.youtube.com/watch?v=coQ5dg8wM2o&t=494s)。 我的 index.html 中有以下内容:
我是一个使用 ScrollMagic 的菜鸟,并尝试通过复制 ScrollMagic 的示例之一来学习。 http://scrollmagic.io/examples/advanced/advance
需要帮助调试一小段脚本。 我使用“masonry”插件以平铺方式排列多个 div。该脚本似乎工作正常,除了我收到错误 jQuery (intermediate value).imagesLoaded
我使用 jQuery Autosize 插件: http://www.jacklmoore.com/autosize/ 您可以在此处看到脚本本身: http://www.jacklmoore.com/
我必须遵循以下关系: class Course true, :id => false do |t| t.integer :user_id t.integer :course_id t.i
我的路线是这样的 import express from 'express' import mysql from 'mysql2' import { dbusername } from '../con
我正在尝试使用 Chart Js 库生成圆环图,结果抛出错误 Uncaught TypeError: (intermediate value).Doughnut is not a function。我
我在一个名为 StructureWindowComponent 的组件中实现事件处理,并且在 LeggerStructureWindowComponent 中也有一个覆盖它。 在基类(Structur
问题:我想将使用 xlsx 的条件格式 icon_set 应用于列,但没有获得正确值的正确箭头 这是我想要的输出: 这是我当前的输出: 这是我的代码: writer.sheets[sheet].con
这是我的 webpack.config.js "use strict"; var webpack = require('webpack') module.exports = { entry:
请帮助我。当我在 ASP.NET MVC 中使用 jQuery 时出现错误。 Uncaught TypeError: ((x.event.special[i.origType] || (interme
我是一名优秀的程序员,十分优秀!