Python 重新排序数据并创建新的数据文件

Python 重新排序数据并创建新的数据文件,python,Python,我对编程有点陌生,它不是我的分支,但我需要这项任务在几天内分析我的数据,现在没有足够的时间来研究python。假设我有这样的数据文件: 0 2 0.5 8.4 1 354.8 0 41 0.5 2 1 48.8 0 2 41 0.5 8.4 2 1 354.8 48.8 现在我需要从这个新的数据文件创建如下所示: 0 2 0.5 8.4 1 354.8 0 41 0.5 2 1 48.8 0 2 41 0.5 8.4 2 1 354.8 48.8 只要第一列中有零值,它就会开始将数据从第

我对编程有点陌生,它不是我的分支,但我需要这项任务在几天内分析我的数据,现在没有足够的时间来研究python。假设我有这样的数据文件:

0 2
0.5 8.4
1 354.8
0 41
0.5 2
1 48.8
0 2 41
0.5 8.4 2
1 354.8 48.8
现在我需要从这个新的数据文件创建如下所示:

0 2
0.5 8.4
1 354.8
0 41
0.5 2
1 48.8
0 2 41
0.5 8.4 2
1 354.8 48.8
只要第一列中有零值,它就会开始将数据从第二列写入新列。第一列中的数字序列总是重复的。这只是一个特例,会有更多的0,0.5和1的重复序列


我恳请您对此任务提供一些帮助,或者为我提供一些如何用python解决此问题的指导

使用
pandas
。假设列上有名称:

df.columns = ['a', 'b']
df

    a     b
0  0.0    2.0
1  0.5    8.4
2  1.0  354.8
3  0.0   41.0
4  0.5    2.0
5  1.0   48.8
您可以使用:

df2 = df.groupby(['a'])['b'].apply(list).reset_index() # group by "a", get grouped "b" in list format
并获得:

     a              b
0  0.0    [2.0, 41.0]
1  0.5     [8.4, 2.0]
2  1.0  [354.8, 48.8]
最后提取行数据:

Row_list =[] 
for index, rows in df2.iterrows(): 
    my_list =[rows.a, rows.b]
    my_list= str(my_list).replace('[','').replace(']','')
    Row_list.append(my_list) 

您可以使用基本的Python文件和文本方法(不需要第三方模块)。是存储数据的方便容器数据类型。例如:

导入集合
data=collections.defaultdict(列表)
以open('input.txt','rt')作为文件:
对于文件中的行:
n1,n2=line.strip().split()
数据[n1]。追加(n2)
打开('output.txt','wt')作为文件:
对于已排序的输入(数据):
file.write(“%s%s\n%”(键),.join(数据[key]))

那么您想根据第一列中的值对第二列和以后列中的值进行分组吗?在Python中,您知道如何做多少工作?例如,您是否能够打开文件并读取文本行?您能将这些值解释为数字吗?(您的任务是否确实需要将它们视为数字?@KarlKnechtel在原始文件中,始终有两列,第一列类似于函数y=f(x)中的x值,并且它们始终相同。第二列是y。因此将有多条曲线y_i=f_i(x),我需要在新的数据文件中对它们进行分类,第一列是x值,其他列是y_i。我在一周前开始学习python,只花了几个小时,我使用numpy并做了一些矩阵运算,但很少使用循环或将数据写入文件。我读了一点Python速成教程。@serafeim我现在正试图理解这段代码,以及如何将它推广到新数据文件中未知数量的列。我可能过于简化了我的原始数据。谢谢你的建议,这并不难
df2.shape
返回行数和列数。然后循环就可以正常工作了。