【发布时间】:2020-09-09 11:10:53
【问题描述】:
为清楚起见编辑
我有一组需要以编程方式组合的数据框。每个人代表一组治疗过程中的特定参与者。每帧来自我已导入 pandas 的 1 张 Excel 工作簿(每个客户一个工作簿,每个心理测量仪器 1 个工作表)。
下面的数据框是参与者 a,工具 a 的示例:
| | beaseline | time 1 | time 1 change | time 1 change from baseline | time 2 | time 2 change | time 2 change from baseline |
|--------- |----------- |-------- |--------------- |----------------------------- |-------- |--------------- |----------------------------- |
| item 1 | 3 | 4 | Nan | 1 | 4 | 0 | 1 |
| item 2 | 3 | 2 | Nan | 0 | 3 | 1 | 0 |
| item 3 | 1 | 1 | Nan | 0 | 2 | 1 | 1 |
| item 4 | 1 | 1 | Nan | 0 | 1 | 0 | 0 |
| item 5 | 1 | 2 | Nan | 1 | 1 | -1 | 0 |
我需要将其与表格数据框中其他参与者的观察结果结合起来,这样每一行都是参与者,每一列是对特定时间点项目的响应。*
所以我需要将这些数据重新塑造成这样的:
| | Baseline item 1 | Baseline item 2 | Baseline item 3 | Baseline item 4 | Baseline item 5 | time 1 item 1 | time 1 item 2 |
|--- |----------------- |----------------- |----------------- |----------------- |----------------- |--------------- |--------------- |
| 0 | 3 | 3 | 1 | 1 | 1 | 4 | 2 |
一旦我对每个数据帧进行了这种重塑,我就可以将它们附加在一起并将客户端代码添加为第一列,从而区分每个参与者。
| | Client code | Baseline item 1 | Baseline item 2 | Baseline item 3 | Baseline item 4 | Baseline item 5 | time 1 item 1 | time 1 item 2 |
|--- |------------- |----------------- |----------------- |----------------- |----------------- |----------------- |--------------- |--------------- |
| 0 | xxi212121 | 3 | 3 | 1 | 1 | 1 | 4 | 2 | | 4 | 2 |
我已经使用了很多重复的代码,基本上是手动将每个切片拉成一个系列,重命名它,然后创建一个新的数据框:
baseline = pd.Dataframe(raw_data.iloc[2:,1])
time_1 = pd.Dataframe(raw_data.iloc[2:,2])
但显然这是一个非常愚蠢的解决方案。
我需要能够在许多类似的数据帧中重复此操作,因此我需要一个更有用的解决方案,非常感谢任何帮助。
【问题讨论】:
-
你能解释一下逻辑吗,其他参与者的数据在哪里?我的意思是你将如何区分一个参与者和另一个参与者的数据..
-
我已经编辑了帖子以尝试解决这个问题,但是,手头的特定问题是重塑我在表一中显示的数据。当谈到合并数据时,我已经可以解决这个问题了。不过,感谢您指出所需的更改。
-
包含
items的列是否设置为数据框的索引? -
没有。由于工作表的格式,我不得不进行一些编辑以消除空行和列,但我没有设置 DF 的索引或列
-
虽然每列都有一个标题,但我尚未将其指定为实际的列名,因此行和列都被编号而不是命名。感谢您提出问题以澄清任何帮助。
标签: python pandas dataframe data-munging