如何用以前的值填充数据框? [复制]

Posted

技术标签:

【中文标题】如何用以前的值填充数据框? [复制]【英文标题】:how to fill dataframe with former value? [duplicate] 【发布时间】:2019-11-09 03:28:31 【问题描述】:

我从 excel 文件中导入数据。但是excel文件中合并单元格的格式在python中不匹配。因此,我不得不修改python中的数据。

例如:我在python中导入的数据是这样的

0   aa
1   NaN
2   NaN
3   NaN
4   b
5   NaN
6   NaN
7   NaN
8   NaN
9   ccc
10  NaN
11  NaN
12  NaN
13  dd
14  NaN
15  NaN
16  NaN

我想要的结果是:

0   aa
1   aa
2   aa
3   aa
4   b
5   b
6   b
7   b
8   b
9   ccc
10  ccc
11  ccc
12  ccc
13  dd
14  dd
15  dd
16  dd

我尝试使用 for 循环来解决问题。但这花了很多时间,而且我有一个庞大的数据集。不知道有没有更快的方法。

【问题讨论】:

您正在将数据加载到 pandas 数据框,对吧? 数据类型应该是字符串而不是浮点数,抱歉 如果您对问题有补充,最好编辑问题并将其添加到那里,而不是在评论中。 @Itamar Mushkin 是的 转换类型-df = df.astype(str) 【参考方案1】:

看起来像 .fillna() is your friend – 引用文档::

我们还可以向前或向后传播非空值。

>>> df
     A    B   C  D
0  NaN  2.0 NaN  0
1  3.0  4.0 NaN  1
2  NaN  NaN NaN  5
3  NaN  3.0 NaN  4
>>> df.fillna(method='ffill')
    A   B   C   D
0   NaN 2.0 NaN 0
1   3.0 4.0 NaN 1
2   3.0 4.0 NaN 5
3   3.0 3.0 NaN 4

【讨论】:

啊,打败我了 :-) @AKX 你能帮我重新修改问题格式吗?【参考方案2】:

这正是pandas.fillna()函数的使用

【讨论】:

【参考方案3】:

您可以借助applyfillna 方法获得您想要的结果:-

import pandas as pd
import numpy as np

df = pd.DataFrame(data = 'A':['a', np.nan, np.nan, 'b', np.nan])

l = []
def change(value): 
    if value == "bhale":
        value = l[-1]
        return value
    else:        
        l.append(value)
        return value

# First converting NaN values into any string value like `bhale` here
df['A'] = df['A'].fillna('bhale')  
df["A"] = df['A'].apply(change)   # Using apply method.
df

希望对你有帮助。

【讨论】:

以上是关于如何用以前的值填充数据框? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何填充列表中的值并将其转换为数据框?

如何从 for 循环构建和填充熊猫数据框? [复制]

如何在熊猫数据框中仅填充选定列的空值? [复制]

如何在jsp中填充组合框? [复制]

如何在 HTML 表单中“预填充”文本区域的值? [复制]

如何检查所有文本框是不是已填充? [复制]