【发布时间】:2020-03-13 19:32:35
【问题描述】:
我有一些问题,希望你能帮助我。 数据如下:
该列标记为高度,数字是该时间范围内的可用数据。 所以以第一行为例,在 288m 的高度,只有 10% 的数据可用(其他 90% 无法测量)
我想设置一个阈值,例如 80。所以只应包括至少包含 80% 可用数据的高度。 对于每一行,我想找到 >= 80 仍然为真的最后一个值。 然后应将找到此值的高度添加到新列中。
我可以使用以下命令显示行:df.iloc[0],这将使我获得第一行的所有值...通常我会编写一个循环,但由于这是 Pandas DataFrame,应该有一个更方便的选项用于获取条件 >= 80 为真的最后一个值。
伪代码如下所示:
- 对于数据框中的每一行,检查值是否 >= 80
- 提取最后一个值的列名,此条件为真
- 将此值附加到名为“高度值”的新列中
我希望我让自己有点清楚。我对 pandas 很陌生,似乎在基于条件表达式的数据提取方面遇到了很多困难。
编辑:
前 3 行的 pandas 代码是:(时间索引不重要所以我没有包含它)
pdf = pd.DataFrame([[100.0, 100.0, 100.0, 100.0, 100.0, 99.0, 97.0, 93.0, 71.0, 45.0, 27.0, 10.0],
[100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 94.0, 81.0, 62.0, 36.0, 9.0],
[100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 92.0, 90.0, 68.0, 45.0, 25.0, 13.0]],
columns=[40.0, 58.0, 78.0, 98.0, 118.0, 138.0, 163.0, 178.0, 198.0, 228.0, 248.0, 288.0])
编辑 2: 输出数据应如下所示:
result = pd.DataFrame([[100.0, 100.0, 100.0, 100.0, 100.0, 99.0, 97.0, 93.0, 71.0, 45.0, 27.0, 10.0, 178.0],
[100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 94.0, 81.0, 62.0, 36.0, 9.0, 198.0],
[100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 92.0, 90.0, 68.0, 45.0, 25.0, 13.0, 178.0]],
columns=[40.0, 58.0, 78.0, 98.0, 118.0, 138.0, 163.0, 178.0, 198.0, 228.0, 248.0, 288.0,'max_available_height'])
【问题讨论】:
-
您是否可以使用数据框的文本示例并将其粘贴,也请提供您的预期输出。每行 5-10 行就可以了。
-
阅读此How to ask a good pandas question,然后在线编辑您的问题。
-
抱歉给您带来不便,我编辑了我的问题并将前 3 行放入。
标签: python pandas dataframe conditional-statements