Python 如何处理在不同行中有多个列的.dat文件数据帧?

Python 如何处理在不同行中有多个列的.dat文件数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试从.dat文件导入数据。 这些文件具有以下结构(每个测量有几百个): 我试过: (一) 只给出一列。 添加、sep='、、分隔符='或,delim_whitespace=True将导致 ParserError:标记数据时出错。C错误:第3行应为1个字段,锯2个 2) 我见过有人使用: 从字符串导入查找、rfind、拆分、剥离 这会引发错误:ImportError:无法从“字符串”导入所有四个名称的“查找”。 3) 创建切片并在以后更改它们也不会起作用: acf=df[1:179]

我正在尝试从.dat文件导入数据。 这些文件具有以下结构(每个测量有几百个):

我试过:
(一)

只给出一列。
添加
、sep='
、分隔符='
,delim_whitespace=True
将导致
ParserError:标记数据时出错。C错误:第3行应为1个字段,锯2个
2) 
我见过有人使用:
从字符串导入查找、rfind、拆分、剥离

这会引发错误:
ImportError:无法从“字符串”导入所有四个名称的“查找”。

3)
创建切片并在以后更改它们也不会起作用:

acf=df[1:179]
acf["#-G8k5perc"]= acf["#-G8k5perc"].str.split(" ", n = 1, expand = True)

关于如何为文件中的每组数据(acf0、fit0等)获取两列,您有什么想法吗?

您不能将csv阅读器与数据格式
.dat
一起使用。 请尝试以下代码:

import csv

datContent = [i.strip().split() for i in open("./yourdata.dat").readlines()]

with open("./yourdata.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows(datContent)
然后尝试使用熊猫创建新列:

import pandas as pd

def your_func(row):
    return row['x-momentum'] / row['mass']

columns_to_keep = ['#time', 'x-momentum', 'mass']
dataframe = pd.read_csv("./yourdata.csv", usecols=columns_to_keep)
dataframe['new_column'] = dataframe.apply(your_func, axis=1)

print dataframe

用您的输入文件名替换
yourdata.csv

如果这个答案是好答案,请投票,或者让我知道您的代码输出以获得更多帮助!学习愉快,祝你好运:)我从中得到的唯一结果是:
如果我试图用
acf=f[1:179]
或其他东西操纵这个对象,我会得到
TypeError:“'u io.BufferedWriter'对象不可下标
我试图修正你的英语语法,但我不得不猜一些单词;请检查。我认为读者根本不关心文件名。
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  app.launch_new_instance()
import csv

datContent = [i.strip().split() for i in open("./yourdata.dat").readlines()]

with open("./yourdata.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows(datContent)
import pandas as pd

def your_func(row):
    return row['x-momentum'] / row['mass']

columns_to_keep = ['#time', 'x-momentum', 'mass']
dataframe = pd.read_csv("./yourdata.csv", usecols=columns_to_keep)
dataframe['new_column'] = dataframe.apply(your_func, axis=1)

print dataframe