我有一个大型数据集(请参见下面的示例格式),我需要执行以下操作:
- 识别出现在第 1、2、5 列上的重复值 - 如果全部重复,那么我需要删除冗余行并平均第 8 列中的值(这对于我将发布的代码是成功的 -
- 在第一步之后,我想将第 1,2 列的值四舍五入为整数(无小数)
- 我想重新引入第 3、4、6 和 7
列 - 第 3、6 和 7 列需要有一个我将指定的特定值(例如,3 应该全为 0,6 全为 1,第 7 列全为 1)(类似于输入文件)第 4 列需要增加一,基于第 4 列不同值的数量)(类似于输入文件
这是一个示例输入文件:数据(文件名)
564991.15 7371277.89 0 1 1530 1 1 16.0225
564991.15 7371277.89 0 1 8250 1 1 14.4405
564991.15 7371277.89 0 2 1530 1 1 14.8637
564991.15 7371277.89 0 2 8250 1 1 14.8918
564991.17 7371277.89 0 3 1530 1 1 16.0002
564991.17 7371277.89 0 3 8250 1 1 15.4333
564991.04 7371276.76 0 4 1530 1 1 14.73
564991.04 7371276.76 0 4 8250 1 1 15.6138
564991.04 7371276.76 0 5 1530 1 1 16.2453
564991.04 7371276.76 0 5 8250 1 1 15.6138
这是我所知道的代码(目前我在 calc 中补充)
import os
import numpy as np
import pandas as pd
datadirectory = '/media/data'
os.chdir = 'datadirectory'
df = pd.read_csv('/media/data/data.dat')
sorted_data = df.groupby(["X.1","X.2","X.5"])["X.8"].mean().reset_index()
tuple_data = [tuple(x) for x in sorted_data.values]
datas = np.asarray(tuple_data)
np.savetxt('sorted_data_rounded.dat', datas, fmt='%s', delimiter='\t')
但他只给了我 4 列,没有四舍五入的数据....