如何复制低于现有值的值,直到下一个非空白值?

我试着搜索了一下,但很难用语言来描述它,所以很难找到(并且用正确的语言)。


鉴于:


  A B C

1 1

2

3

4 2

5

6 3

7

8

9

0

想要的结果:


  A B C D

1 1     1

2       1

3       1

4 2     2

5       2

6 3     3

7       3

8       3

9       3

0       3


ibeautiful
浏览 122回答 2
2回答

凤凰求蛊

您的 DataFrame 在“空”单元格中没有NaN,所以我假设:每列的dtype是object(实际上是string),“空”单元格包含空字符串或空格。在这种情况下,一种可能的解决方案是:用NaN替换空字符串/空格,调用填充。就像是:df['D'] = df.A.replace(r'^\s*$', np.nan, regex=True).ffill()编辑如果要“向下复制”的值可以在任何列中(不仅在A中),那么解决方案是:df['D'] = df.replace(r'^\s*$', np.nan, regex=True).ffill(axis=1)\     .iloc[:, -1].ffill()与Anky在他的评论中提出的类似。

米脂

基于@Mohit Motwani 评论的完整答案:import pandas as pddf = pd.DataFrame([[1, None, None], [None]*3,[None]*3,                   [2,None,None], [None]*3,                   [3,None,None], [None]*3, [None]*3, [None]*3,],                   columns=["A","B","C"] )print(df)df["D"] = df["A"].ffill()print(df)之前的输出:     A     B     C0  1.0  None  None1  NaN  None  None2  NaN  None  None3  2.0  None  None4  NaN  None  None5  3.0  None  None6  NaN  None  None7  NaN  None  None8  NaN  None  None输出后:     A     B     C    D0  1.0  None  None  1.01  NaN  None  None  1.02  NaN  None  None  1.03  2.0  None  None  2.04  NaN  None  None  2.05  3.0  None  None  3.06  NaN  None  None  3.07  NaN  None  None  3.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python