从大型文本文件创建多个数据框

时间:2019-12-08 03:55:59

标签: python

使用Python,我如何将文本文件分成数据帧,其中每84行是一个新的不同数据帧?第一列x_ft每84行是相同的值,然后对于接下来的84行增加5 ft。我还需要其他两列(depth_ft和vel_ft_s)的行中每个相同的x_ft值和对应的值也要在新的数据框中。
我的文本文件格式如下:

   x_ft     depth_ft    vel_ft_s
0   270     3535.755    551.735107
1   270     3534.555    551.735107
2   270     3533.355    551.735107
3   270     3532.155    551.735107
4   270     3530.955    551.735107
.
.
33848   2280    3471.334    1093.897339
33849   2280    3470.134    1102.685547
33850   2280    3468.934    1113.144287
33851   2280    3467.734    1123.937134

我尝试了许多不同的方法,但始终会遇到错误,非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我建议查看pandas.read_table,它会自动输出一个DataFrame。这样做之后,您可以通过执行以下操作来隔离要分离的DataFrame的行(每84行):

df = #Read txt datatable with Pandas
arr = []
#This gives you an array of all x values in your dataset
for x in range(0,403):
    val = 270+5*x
    arr.append(val)

#This generates csv files for every row with a specific x_ft value with its corresponding columns (depth_ft and vel_ft_s)
for x_value in arr:
    tempdf = df[(df['x_ft'])] = x_value
    tempdf.to_csv("df"+x_value+".csv")

答案 1 :(得分:0)

您可以获得索引以拆分数据:

rows = 84
datasets = round(len(data)/rows) # total datasets
index_list = []

for index in data.index:
    x = index % rows    
    if x == 0:
        index_list.append(index)

print(index_list)

因此,按索引拆分原始数据集:

l_mod = index_list + [max(index_list)+1]
dfs_list = [data.iloc[l_mod[n]:l_mod[n+1]] for n in range(len(l_mod)-1)]

print(len(dfs_list))

输出

print(type(dfs_list[1]))
# pandas.core.frame.DataFrame

print(len(dfs_list[0]))
# 84