[英]how to copy values from one column into another column based on conditions of two different columns in pandas?
[英]Selecting values in two columns based on conditions in another column (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
我得到零的 position 並在循環中使用它們:
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)
這段代碼所做的是根據零的位置(df['number'] == 0)
拆分您的 DataFrame 。 你終於得到了一個 DataFrames 列表,所以你可以對它們做任何你想做的事情。
如果零是每個案例的開始,那么您可以遍歷 number==0 的每個實例。 確保數字列不是 dataframe 的索引。
start_idx = df[df.number==0].index
cases = []
for start,end in zip(start_idx[:-1], start_idx[1:]):
cases.append(df.iloc[start:end])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.