如果行具有相同的“ A列”值,则用最后的已知值填充空的“ B列”单元格

Arès

我真的是Python和Datascience的新手。

我有一个大型数据集(具有10万多行),在此数据集中,我有两列ABA是Datetime列,B是字符串。

B列具有一些NaN值,考虑到我的空白B列行和已经填充的B列行在同一天,月份和年份(A列)的情况,我想用最新的已知B列值填充这些NaN值。

我解释自己:

假设这是我的输入:

df=pd.DataFrame({'A': ["2019-03-13 08:12:23", "2019-03-13 07:10:18", "2019-03-20 08:12:23", "2019-03-13 08:12:23", "2019-03-15 10:35:53", "2019-03-20 11:12:23"], 'B': ["B1", "B0", "B13", np.nan, "B10", "B12"]})
                     A    B
0  2019-03-13 08:12:23   B1
1  2019-03-13 07:10:18   B0
2  2019-03-20 08:12:23  B13
3  2019-03-13 08:12:23  NaN
4  2019-03-15 10:35:53  B10
5  2019-03-20 11:12:23  B12

我想用B1(在同一天出现的B值填充NaN值,并且考虑到该“最大时间”不在实际A列值之前的条件,所以具有最大时间)。

所以我的输出应如下所示:

                     A    B
0  2019-03-13 08:12:23   B1
1  2019-03-13 07:10:18   B0
2  2019-03-20 08:12:23  B13
3  2019-03-13 08:12:23   B1
4  2019-03-15 10:35:53  B10
5  2019-03-20 11:12:23  B12

我试图做到这一点没有成功,我能做的最好的就是使用此方法将NaN Value设置为B13:

df['B']=df['B'].replace({'B': {0: np.nan}}).ffill()

你们能告诉我实现这一目标的最胖,最经济的方法吗?

拉斐尔克

使用groupby+ffill

as_date = pd.to_datetime(df.A)
s = np.argsort(as_date)

df['B'] = df.B.loc[s].groupby(as_date.loc[s].dt.date).ffill().loc[df.index]

                     A    B
0  2019-03-13 08:12:23   B1
1  2019-03-13 07:10:18   B0
2  2019-03-20 08:12:23  B13
3  2019-03-13 08:12:23   B1
4  2019-03-15 10:35:53  B10
5  2019-03-20 11:12:23  B12

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果 A 列单元格与 B 列单元格匹配,则显示与 B 列相同行的 C 列值

来自分类Dev

如果该行中列的A单元格与B的标题相同,则为B列中的单元格着色

来自分类Dev

尝试在sheet1的最后一行的b列中查找单元格的值

来自分类Dev

删除跨列具有相同单元格值的任何行

来自分类Dev

如果具有相同的列标志,则合并两个单元格的结果

来自分类Dev

如果列多次具有相同的值,则选择行

来自分类Dev

如果 A 列中的单元格不为空,则 B 列等于,C 列等于

来自分类Dev

如果两个单元格在第1列中具有相同的值,则将关联的单元格移至行中

来自分类Dev

如果行中的所有单元格都具有相同的值,则尝试删除datagridview中的整行

来自分类Dev

Excel VBA-需要删除行,其中填充了引用错误的B列中的单元格值

来自分类Dev

如果列具有确定的值,则下一列显示多个单元格的值

来自分类Dev

如果列具有特定值,请使用Google脚本更改同一行中单元格的值

来自分类Dev

如果列具有特定值,请使用Google脚本更改同一行中单元格的值

来自分类Dev

如果单元格A为空,则清除B到F列的内容

来自分类Dev

从具有多个值的单元格创建虚拟列

来自分类Dev

Excel-比较列单元格并删除行(如果它们包含部分相同的值)

来自分类Dev

如果满足A列中的条件,则用B列的值填充A列中的行

来自分类Dev

VBA-如果列A中的单元格不为空白,则列B等于

来自分类Dev

MS Excel:如果列B为空,则将列A的内容添加到单元格B中

来自分类Dev

根据B列中的单元格值检查其他工作表的2列(C&D)中是否有更高的值,并自动填充结果

来自分类Dev

将列中的单元格值与行中的单元格值相交?

来自分类Dev

如果单元格不为空,如何复制前一行不同列中的值?

来自分类Dev

如果单元格为空,则将相邻列的值移到上面的行

来自分类Dev

如果另一列(同一行)中的单元格具有值,我如何要求一列中的单元格具有值?

来自分类Dev

如何在具有已知第一个单元格并在特定值单元格之前结束的列中定义范围

来自分类Dev

EXCEL如果单元格x为空,则用单元格z填充单元格y

来自分类Dev

如果单元格包含值,则VBA添加列

来自分类Dev

如果单元格包含值,则为“列标题”

来自分类Dev

如果在不同的列(AWK)上具有相同的值,则合并连续的行的值

Related 相关文章

  1. 1

    如果 A 列单元格与 B 列单元格匹配,则显示与 B 列相同行的 C 列值

  2. 2

    如果该行中列的A单元格与B的标题相同,则为B列中的单元格着色

  3. 3

    尝试在sheet1的最后一行的b列中查找单元格的值

  4. 4

    删除跨列具有相同单元格值的任何行

  5. 5

    如果具有相同的列标志,则合并两个单元格的结果

  6. 6

    如果列多次具有相同的值,则选择行

  7. 7

    如果 A 列中的单元格不为空,则 B 列等于,C 列等于

  8. 8

    如果两个单元格在第1列中具有相同的值,则将关联的单元格移至行中

  9. 9

    如果行中的所有单元格都具有相同的值,则尝试删除datagridview中的整行

  10. 10

    Excel VBA-需要删除行,其中填充了引用错误的B列中的单元格值

  11. 11

    如果列具有确定的值,则下一列显示多个单元格的值

  12. 12

    如果列具有特定值,请使用Google脚本更改同一行中单元格的值

  13. 13

    如果列具有特定值,请使用Google脚本更改同一行中单元格的值

  14. 14

    如果单元格A为空,则清除B到F列的内容

  15. 15

    从具有多个值的单元格创建虚拟列

  16. 16

    Excel-比较列单元格并删除行(如果它们包含部分相同的值)

  17. 17

    如果满足A列中的条件,则用B列的值填充A列中的行

  18. 18

    VBA-如果列A中的单元格不为空白,则列B等于

  19. 19

    MS Excel:如果列B为空,则将列A的内容添加到单元格B中

  20. 20

    根据B列中的单元格值检查其他工作表的2列(C&D)中是否有更高的值,并自动填充结果

  21. 21

    将列中的单元格值与行中的单元格值相交?

  22. 22

    如果单元格不为空,如何复制前一行不同列中的值?

  23. 23

    如果单元格为空,则将相邻列的值移到上面的行

  24. 24

    如果另一列(同一行)中的单元格具有值,我如何要求一列中的单元格具有值?

  25. 25

    如何在具有已知第一个单元格并在特定值单元格之前结束的列中定义范围

  26. 26

    EXCEL如果单元格x为空,则用单元格z填充单元格y

  27. 27

    如果单元格包含值,则VBA添加列

  28. 28

    如果单元格包含值,则为“列标题”

  29. 29

    如果在不同的列(AWK)上具有相同的值,则合并连续的行的值

热门标签

归档