Python 重新排序数据并创建新的数据文件
我对编程有点陌生,它不是我的分支,但我需要这项任务在几天内分析我的数据,现在没有足够的时间来研究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 只要第一列中有零值,它就会开始将数据从第
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
返回行数和列数。然后循环就可以正常工作了。