Python Pandas 删除数据框中的空单元格

标签 python pandas dataframe

我试图将刻度数据转换为 OHLC 数据,我的代码工作如下:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import mpl_finance 
from datetime import *

import os

dateparse = lambda x: pd.datetime.strptime(x, '%Y/%m/%d %H:%M:%S')

file_dir = "D:/USDJPY 2017-2018/"  
#directory
for root, dirs, files in os.walk(file_dir):
    file_list = files
file_list.sort()

df_all =  pd.read_csv(file_dir + file_list[0], parse_dates=['RateDateTime'], index_col='RateDateTime',date_parser=dateparse) 
for file in file_list:
    if file != file_list[0]:
        df_all =  df_all.append(pd.read_csv(file_dir + file, parse_dates=['RateDateTime'], index_col='RateDateTime',date_parser=dateparse))

grouped = df_all.groupby('CurrencyPair')
ask =  grouped['RateAsk'].resample('1440Min').ohlc()
bid = grouped['RateBid'].resample('1440Min').ohlc()

a=pd.concat([ask, bid], axis=1, keys=['RateAsk', 'RateBid'])
a.to_csv('C:/Users/lenovo/Desktop/USDJPY 2017-2018 1DAY sorted.csv')
print('Conversion complete')

但是,我转换后的数据中有空单元格,如代码片段所示: Sorted data snippet

正如您所看到的,在没有可用数据的日子里有一些空单元格。我想删除第 9 行和第 16 行等行,但我不希望 Python 删除第 3 行,因为它是标题行之一。我试过了

a['Open'].replace('', np.nan, inplace=True)
a.dropna(subset=['Open'], inplace=True)

但 Python 返回了我:

File "pandas_libs\hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: 'open'

我该怎么做?当 CG 列上都堆叠有两个标题时,我如何引用列来计算点差?请帮忙!非常感谢!

最佳答案

存在MultiIndex,因此有必要通过以下方式展平列名称:

a = pd.concat([ask, bid], axis=1, keys=['RateAsk', 'RateBid']) 
a.columns = a.columns.map('_'.join)

然后使用 boolean indexing按列过滤所有非空且非 NaN 行RateAsk_open:

a = a[(a['RateAsk_open'] != '') | (a['RateAsk_open'].notnull()]

但是如果想删除所有元素都丢失的行:

a = a.dropna(how='all')

关于Python Pandas 删除数据框中的空单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52091336/

相关文章:

python - pandas dataframe hexbin 图没有 xlabel 或轴值

r - 如何在多个数据帧上使用 left_join?

python - pylint "invalid syntax"(语法错误)来自 '*='

python - 在 Pandas 中分组时如何计算列组合中的不同值?

python - 根据斜率向 matplotlib 散点图添加一条线

python - Numpy 类型错误

Python Pandas Drop 数据框

python - 如何访问 pandas DataFrame 中除第一列之外的所有列?

python - 将日期时间列转换为星期几

python - 图表上的比例问题