所以.我们有一个混乱的数据存储在我需要分析的TSV文件中.这是它的外观
status=200 protocol=http region_name=Podolsk datetime=2016-03-10 15:51:58 user_ip=0.120.81.243 user_agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 user_id=7885299833141807155 user_vhost=tindex.ru method=GET page=/search/
Run Code Online (Sandbox Code Playgroud)
问题是一些行具有不同的列顺序/其中一些缺少值,我需要摆脱高性能(因为我正在使用的数据集高达100千兆字节).
Data = pd.read_table('data/data.tsv', sep='\t+',header=None,names=['status', 'protocol',\
'region_name', 'datetime',\
'user_ip', 'user_agent',\
'user_id', 'user_vhost',\
'method', 'page'], engine='python')
Clean_Data = (Data.dropna()).reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,一些列是偏移的.我做了一个非常低性能的解决方案
ids = Clean_Data.index.tolist()
for column in Clean_Data.columns:
for row, i in zip(Clean_Data[column], ids):
if np.logical_not(str(column) in row):
Clean_Data.drop([i], inplace=True)
ids.remove(i)
Run Code Online (Sandbox Code Playgroud)
所以现在数据看起来不错......至少我可以使用它! 但是我上面提到的方法的高性能替代方案是什么?
更新unutbu代码:traceback错误
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-52c9d76f9744> in <module>() …Run Code Online (Sandbox Code Playgroud)