我有一个Pandas Dataframe ,类似于(但远大于):
dob name x y
subject_code datapoint
subject1 0 2000 foo 1.0130617046645218 -0.9197554534168588
1 2000 foo 1.6268826597606547 0.9235889343439213
2 2000 foo -0.27934495719523383 -0.7649336229271105
subject2 3 1980 bar 0.799986663648364 0.17376727917253385
4 1980 bar 0.05939596855122923 1.6401662246395807
5 1980 bar -0.6496807099005506 -0.9591735410133281
6 1980 bar -0.6953680580655669 -0.15390936342856965
这是我从一个普通的csv文件中读取的,在该文件中,所有主题级属性(如这里的subject_code
、dob
和name
)都使用命令df = pd.read_csv(PATH, index_col=["subject_code", "datapoint"])
在每一列中重复。
目前,dob和名字在每一栏都重复,这似乎是不好的做法。我的问题有两个:
1.是否有办法将列dob
和name
与更高级别的索引subject_code
相关联,以便它们在同一个表中但不重复?
1.将subject_code
、dob
和name
拉到一个单独的较小表中的最佳方法是什么?
关于(2),我现在是:
subject_cols = df.groupby("subject_code")\
.nunique()\
.max() == 1
subject_cols = subject_cols.index[subject_cols]
其中df[subject_cols]
给出:
dob name
subject_code datapoint
subject1 0 2000 foo
1 2000 foo
2 2000 foo
subject2 3 1980 bar
4 1980 bar
1条答案
按热度按时间k5ifujac1#
下面的 Dataframe 是我从运行你的玩具例子中得到的:
您可以使用Pandas groupby和explode完成第一项任务:
x一个一个一个一个x一个一个二个x
第二个任务是Pandasfrom_records和reset_index:
一个三个三个一个