删除数据框中具有空系列的行

时间:2020-02-15 23:04:03

标签: python pandas dataframe

我在数据框中有一列。该行中有一个空系列:

0                                          4.5
1                                          0.5
2                                            8
3                                            8
4                                            8
                        ...                   
704                                        3.5
705                                        0.5
706                                       11.5
707                                        0.5
708    Series([], Name: price, dtype: float64)
Name: pricediff, Length: 709, dtype: object",
0                                           4
1                                         0.5
2                                         2.5
3                                        19.5
4                                        19.5
                       ...                   
58                                          1
59                                          4
60                                        8.5
61    Series([], Name: price, dtype: float64)
62    Series([], Name: price, dtype: float64)
Name: pricediff, Length: 63, dtype: object",

如何删除行或将其替换为0,而无需直接执行df.drop(df.index [61])等,因为我有多个数据

1 个答案:

答案 0 :(得分:1)

您可以检查每个元素是否为空序列,然后替换所有这些条目。

首先,我们将创建一个测试数据框。

import pandas as pd
import numpy as np


df = pd.DataFrame(np.random.randint(0, 100, (3, 3)))
df[3] = [1, pd.Series([]), 5]

所以,我们有:

    0   1   2                           3
0  31  29   1                           1
1  86  86  71  Series([], dtype: float64)
2  86  80  21                           5

现在,我们引入一个将空Series设为0并将其应用于我们的DataFrame的函数。

def make_empty_series_zero(element):
    if isinstance(element, pd.Series) and len(element) == 0:
        return 0
    else:
        return element


df.applymap(make_empty_series_nan)

将其应用于我们的DataFrame之后,我们将:

    0   1   2  3
0  57  58   2  1
1  96  27   8  0
2   0  43  91  5