python - 如何删除空数据行

标签 python pandas

我有这样格式的数据:

Date,Open,High,Low,Close,Adj Close,Volume
2019-07-31,0.44,0.4401,0.44,0.44,0.44,32900
2019-08-01,0.45,0.45,0.45,0.45,0.45,200
2019-08-02,0.44,0.44,0.43,0.44,0.44,13800
2019-08-08,0.45,0.4501,0.45,0.4501,0.4501,400
2019-08-15,0.43,0.43,0.43,0.43,0.43,300
2019-08-15,0.0,0.0,0.0,0.43,0.43,0

注意最后一行有空数据。
如何过滤此行或删除此行?

df = None
for ticker in tickers:
    try:
        df = pd.read_csv('stock_data/daily/{}.csv'.format(ticker), parse_dates=True, index_col=0).dropna()
    except FileNotFoundError as e:
        continue    # continue with next ticker
    df_closes = df['Close']
    if len(df_closes) < 4:
        continue    # continue with next ticker
    df_closes = df_closes[pd.notnull(df['Close'])]   # delete rows with empty data
    df_closes = df_closes.reindex(index=df_closes.index[::-1]) # reversing

最佳答案

鉴于 Volume 列为零,我假设您认为记录为空,我们可以使用以下方法过滤掉它们:

df = df[df['Volume'] > 0]

或者我们可以检查OpenHighLow中至少有一个与零不同,并过滤掉具有以下特征的行:这些列中只有零:

df = df[df[['Open', 'High', 'Low']].any(axis=1)]

您可以使用以下方法删除重复索引:

df = df[<b>~df.index.duplicated()</b>]

我们可以向 duplicated(..) 添加一个参数,指定要保留哪一个。可能的值为 'first''last'False(这意味着重复索引的所有项目都将被删除)。默认值为'first'

您可以先删除没有值的记录,然后删除具有重复索引的项目。我不会以相反的顺序执行此操作,因为这样您就有删除包含数据的记录的风险,并保留没有数据的记录。

关于python - 如何删除空数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57537353/

相关文章:

python - 对两个数组进行分组和标准化

python - pyspotify 的问题

python - Keras - 将简单输入输出到测试层

python - 带坐标的 Numpy 数组

python - 基于月份列的多个箱线图

python - 如何将腌制数据帧从 GCS 加载到 App Engine

python - 数据框将数据移动到随机列中?

python - 如何使用docx库从MS Word文档中的表格中提取图像?

python - 函数中的 None 是什么意思/可选字段

python - 为什么 Python 的子进程的管道输出如此不可靠?