如何用以前的值填充数据框?

时间:2019-06-27 06:49:20

标签: python pandas dataframe

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

例如:我在python中导入的数据如下

/**
 * Sets Parity Bits
 * @param parity parity bits e.g. UartConfig.PARITY_NONE
 * @return true : successful, false : fail
 */
public boolean setParity(int parity) throws RuntimeException{
    synchronized (LOCK) {
        if(mSerial == null) return false;
        return mSerial.setParity(parity);
    }

我想要的结果是:

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

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

3 个答案:

答案 0 :(得分:1)

类似.fillna() is your friend –引用文档:

  

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

>>> 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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以借助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

希望对您有帮助。