python - 单独的数据文件负号和空白分隔符
问题描述
我正在尝试将空格“”和“-”分开识别为列分隔符。我的文件有空格分隔不一致的错误,例如:
8.55500000 42.93079187 -99.98428964 -0.59917942 20.86164814 8.37369433 0.56431509
8.55600000 42.94500503-100.05470144 -0.55062999 20.86380446 8.38865674 0.56429834
8.55700000 42.99565203-100.11651750 -0.54444340 20.87003752 8.39975047 0.55109542
8.55800000 42.99873154-100.07383720 -0.54648262 20.85777962 8.41246904 0.55645774
解决方案
这是一个更复杂的用法,sep
所以这就是解释。您不能仅在某些情况下将分隔符保留为列的一部分,因此这次代码实际上将分隔符保留为列。这被定义为可选-
符号,后跟连续数字。这种方法将解决该问题,但是它将创建多个nan
列(已删除)。如果文件的列和行很大,这可能会导致内存问题。
from io import StringIO
S = '''
8.500000 42.93079187 -99.98428964 -0.59917942 20.86164814 8.37369433 0.56431509
8.55600000 42.94500503-100.05470144 -0.55062999 20.86380446 8.38865674 0.56429834
8.55700000 42.99565203-100.11651750 -0.54444340 20.87003752 8.39975047 0.55109542
8.55800000 42.99873154-100.07383720 -0.54648262 20.85777962 8.41246904 0.55645774'''
df = pd.read_csv(StringIO(S),
sep='\s*(-?[0-9\.]+)',
engine='python', header=None).dropna(axis=1)
df.head()
# 1 3 5 7 9 11 13
# 0 8.500 42.930792 -99.984290 -0.599179 20.861648 8.373694 0.564315
# 1 8.556 42.945005 -100.054701 -0.550630 20.863804 8.388657 0.564298
# 2 8.557 42.995652 -100.116518 -0.544443 20.870038 8.399750 0.551095
# 3 8.558 42.998732 -100.073837 -0.546483 20.857780 8.412469 0.556458
推荐阅读
- python - 如何在访问请求上下文时从 Flask 发送服务器端事件?
- sql - 如何在sql中插入SUM条件?
- scala - Scala 中的 protobuf 解组错误,抛出 com.google.protobuf.InvalidProtocolBufferException
- python - 如何在 Ubuntu14.04 中将 Pycharm 解释器更改为 3.7?
- numpy-ndarray - 如何更改数组切片的轴?
- pandas - 行中有值,但数据框返回 Nan
- python - 如何安排kivy相机连续读取纹理?
- database - 当我使用 AWS 基础设施时,将 pdf 文件存储在云上的经济高效的解决方案是什么?
- c++ - 使用 C++,将 int 转换为 char 总是有 3 位数的问题
- python - NGINX 服务器块无法按预期工作