python - 根据另一列中的条件选择两列中的值(Python)
问题描述
编辑:有人删除了他的答案。不知道为什么,因为它很有用。
抱歉,如果之前有人问过这个问题,我没有找到解决方案来帮助我解决这个问题。
我有一个包含不同变量的表,但我有兴趣在给定这些条件的情况下仅过滤某些值:在我的表中,列“数字”从 0 开始直到 x,然后再从 0 开始直到另一个 x。为此,我想在单独的数据框中过滤掉 lon 和 lat。例如,对于第一个案例 0 到 5,我希望将 lon 和 lat 保存为“案例 1”,然后程序应该采用下一个 0 到 4 并将新的关联坐标打印到“案例 2”。这应该在所有情况下继续,直到到达“数字”列的末尾。
我的表示例:
number lon(geo) lat(geo)
0 -47 66
1 -45 66
2 -44 67
3 -41 67
4 -38 67
5 -37 67
0 -8 38
1 -7 39
2 -6 39
3 -5 40
4 -5 41
0 . .
. . .
我尝试设置条件:
df = df[(df['number'] >= 0) & (df['number'] <= 0)]
最初,我想到了一个循环,中间有一些 break/next 或 continue 语句。
for i in range(1,len(number)):
break
while (float(i) for i in number > 0):
lon = print (lon)
lat = print (lat)
break
我不确定“while True”循环是否可行?我对此感到有些困惑,因为这是我第一次处理此类问题,因此不胜感激。谢谢!
解决方案
试试这个:
import pandas as pd
df = pd.read_csv('test1.csv', delimiter=";")
print(df)
这是我的测试 CSV(带有假lon
和lat
值):
number lon lat
0 0 a0 b0
1 1 a1 b1
2 2 a2 b2
3 3 a3 b3
4 4 a4 b4
5 0 a0 b0
6 1 a1 b1
7 2 a2 b2
8 3 a3 b3
9 4 a4 b4
10 5 a5 b5
11 0 a0 b0
12 1 a1 b1
13 2 a2 b2
14 3 a3 b3
我得到零的位置并在循环中使用它们:
zeros = df.index[df['number']==0].tolist()
new_dfs = []
for i in range(0,len(zeros)):
try:
df_aux = df.iloc[zeros[i]:zeros[i+1]]
except:
df_aux = df.iloc[zeros[i]:len(df)]
new_dfs.append(df_aux)
这段代码所做的是根据 zeros 的位置拆分您的 DataFrame (df['number'] == 0)
。你终于得到了一个 DataFrames 列表,所以你可以对它们做任何你想做的事情。
推荐阅读
- oracle-apex - 使用新号码导入页面
- java - 如何使用 Java 使用另一个类的返回字符串?
- flutter - 如何在 ListView 中查找项目
- python - 使用 Python 设置渲染层(在自己的渲染层中设置前景、字符和背景)
- sql - 如何修复 SQL Server 中数据类型时间和日期时间不兼容的问题
- react-admin - React-admin:数据提供者中缺少标头对象
- spring-boot - 所有 bean 属性都分配为 null
- sql - 如何在 oracle 中使用 regexp_replace 在 oracle 中允许重音字符?
- excel - 有没有办法搜索和隐藏所有不包含输入给定单元格的值的列?
- c - 为什么我的结构指针忘记了字符串?