python-3.x - 如何使用条件遍历 DataFrame 以重新组织我的数据?
问题描述
我有一个以下格式的 DataFrame,我想使用其中一列数据根据条件重新排列它。
我当前的 DataFrame 具有以下格式:
df.head()
Room Temp1 Temp2 Temp3 Temp4
R1 1 2 1 3
R1 2 3 2 4
R1 3 4 3 5
R2 1 1 2 2
R2 2 2 3 3
...
R15 1 1 1 1
我想“旋转”这个 DataFrame 看起来像这样:
Room
R1 = [1, 2, 3, 2, 3, 4, 1, 2, 3, 3, 4, 5]
R2 = [1, 2, 1, 2, 2, 3, 2, 3]
...
R15 = [1, 1, 1, 1,]
Where:
R1 = Temp1 + Temp2 + Temp3
So that:
R1 = [1, 2, 3, 2, 3, 4, 1, 2, 3, 3, 4, 5]
首先:我尝试使用“where”条件创建每列的列表,其中 Room = 'R1'
room1 = np.where(df["Room"] == 'R1', df["Temp1"], 0).tolist()
它有效,但我需要为每一列单独执行此操作,其中在我的其他数据集中有超过 4 个。
第二:我试图遍历它们:
i = ['Temp1', 'Temp2', 'Temp3', 'Temp4']
room1= []
for i in df[i]:
for row in df["Room"]:
while row == "R1":
...这就是我迷路的地方。我接下来要去哪里?如何遍历其余列并最终得到上面的 DataFrame?
解决方案
这应该可以工作(尽管它不是很有效并且在大 DataFrame 上会很慢):
results = {} # dict to store results
cols = ['Temp1', 'Temp2', 'Temp3', 'Temp4']
for r in df['Room'].unique():
room_list = []
sub_frame = df[df['Room'] == r]
for col in cols:
sub_col = sub_frame[col]
for val in sub_col:
room_list.append(val)
results[r] = room_list
结果将存储在结果字典中,因此您可以使用以下命令访问 R1:
results['R1']
通常迭代 DataFrames 是一个坏主意,但我确信有更好的解决方案!
推荐阅读
- c - 当我在 c 中调用函数时出现问题
- linux - CPU_ZERO“未定义符号”在 NASM 中使用 pthread_setaffinity_np
- javascript - 如何配置 MathJax 以在 HTML 中呈现化学方程式?
- javascript - 提示到 innerhtml
- oracle - 定义到达时间大于预定约会窗口结束时间 30 分钟的逻辑:Oracle
- sql-server - 使用 ROW_NUMBER() 删除 SQL Server 中的重复项
- groovy - 如何在 Geb 测试中使用兄弟姐妹()和最近()
- firebase - Firebase Admin SDK NodeJS - “没有与提供的标识符相对应的用户记录。” 错误
- android - 升级RN版本时Android AppCompat主题问题
- regex - 如何删除除字母、数字和!? . ; , @ ' 在 python pandas df 中使用正则表达式?