python - 在多个条件下迭代 pandas 数据框
问题描述
所以我有这个数据框,其中包含不同点的位置、X、Y、Z 和其他几个属性。然后,我有另一个名为 path() 的字典,其中包含形成轨迹的不同点。这些点包含在数据框中。
出于绘图的原因,我只想将路径()中的点设置为“路径”列等于 2。如何识别数据框的哪些点在此路径中并更改它们的“路径”属性?
澄清:
路径是这样的:
path = {12, 34, 14}
并且 pos{} 为路径的每个节点提供 [x,y,z]
pos = {12: [3, 4, 2], 34: [1, 3, 4], 14: [5, 4, 5]}
其中 [3, 4, 2] = [x, y, z] 就像数据框中的那些。所以我想要做的是将数据框中的“路径”列从 1 更改为 2,以获取与此匹配的数据框中的位置。因此,例如,如果对于 14: [5, 4, 55],数据框中有一行 X = 5、Y = 4 和 Z = 55,我希望这一行的路径 = 2。
这是我尝试过的,我认为它应该有效,但它没有。Basicallt 我尝试过滤位置,然后相应地修改数据框。
(这里我试图从 0 更改为 1 而不是 1 更改为 2,因为我给你的 df 的图像是我在尝试这个时修改但忽略它的图像)
df['path'] = np.zeros(len(df.index))
filt1 = (df['eventID'] == 98)
df_path = df[filt1]
for node in path:
A, B, C = pos[node]
filt2 = (df['X'] == A) & (df['Y'] == B) & (df['Z'] == C)
df_path[filt2]['path'].replace({0:1})
此外,我收到此警告:
UserWarning:
Boolean Series key will be reindexed to match DataFrame index.
抱歉,如果我“违反”了一些不受欢迎的规则,我是新来的。非常感谢
亚力士
解决方案
解决了!
df['path'] = np.zeros(len(df.index))
filt1 = (df['eventID'] == 98)
df_path = df[filt1]
for node in path:
A, B, C = pos[node]
filt2 = (df['X'] == A) & (df['Y'] == B) & (df['Z'] == C)
df_path['path'].loc[filt2] = 1
推荐阅读
- sql - SQL : 检索过去一周添加的前 7 个条目
- c# - 将缓存数据条目的时间戳重置为 now()
- c - 以特定顺序执行 pthreads?
- android - 如何将数据从客户端(android-java 应用程序)发送到解析服务器,对其进行处理,将其保存在 parse-dashboard 中并将结果发送回客户端?
- python - Keras CNN 模块在大约 7 个 epoch 后停止提高准确性
- javascript - 如何将标签中的值分配给输入?
- python - 日期时间属性和育儿的 NDB 索引
- android - 当模拟器在android studio中旋转时如何打开另一个活动?
- json - Swift:JSONDecoder 从 API 返回 nil
- r - 如何更改受 nudge_y 影响的值?