Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将删除数据帧中的空单元格_Python_Pandas_Dataframe - Fatal编程技术网

Python将删除数据帧中的空单元格

Python将删除数据帧中的空单元格,python,pandas,dataframe,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 2

我试图将勾号数据转换为
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')
但是,我转换的数据中有空单元格,看起来与代码段中的一样:

如您所见,有一些空单元格,在这些单元格中没有可用的数据。我想删除第9行和第16行,但我不想让Python删除第3行,因为它是标题行之一。我试过了

a['Open'].replace('', np.nan, inplace=True)
a.dropna(subset=['Open'], inplace=True)
但是Python返回给我:

文件“pandas_libs\hashtable_class_helper.pxi”,第1500行,在pandas._libs.hashtable.PyObjectHashTable.get_项中

KeyError:“打开”


我该怎么做?我如何引用列
C
G
来计算价差,因为它们上面都有两个标题?请帮忙!非常感谢

存在
多索引
,因此有必要通过以下方式展平列名:

a = pd.concat([ask, bid], axis=1, keys=['RateAsk', 'RateBid']) 
a.columns = a.columns.map('_'.join)
然后与按列过滤所有非空行和非NaN行一起使用
RateAsk\u open

a = a[(a['RateAsk_open'] != '') | (a['RateAsk_open'].notnull()]
但如果要删除缺少所有元素的行:

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

@BernardLin-您可以通过
a=pd.concat([ask,bid],axis=1,keys=[RateAsk',[RateBid])获得它。
谢谢您的建议!还有一个问题,我没有在代码中定义df,所以我应该在哪里插入这一行?这里应该是df_all.columns=df_all.columns.map(''.join)还是a.columns=a.columns.map('.join)?@BernardLin-对不起,需要
a.columns=a.columns.map('.join)
,编辑答案。太棒了!我希望我有足够的声誉来支持你的评论!非常感谢你的帮助@伯纳德林-不客气!如果我的答案有帮助,别忘了——点击答案旁边的复选标记,将其从灰色变为填充。谢谢