Select 成对行,列 Pandas 值
Select Paired Row, Col Pandas Values
我相信这很容易,但找到或发现答案却不容易!我正在尝试 select 来自表示纬度(行:5,10,15 等)和经度(列:-98,-97, -96 等)。假设我的 df 看起来像这样:
df:
lat -98 -97 -96 -95 -94
0 5 6 7 8 9 10
1 10 11 12 13 14 15
2 15 16 17 18 19 20
3 20 21 22 23 24 25
4 25 26 27 28 29 30
要通过单行和单列迭代提取的对,我需要以下内容:
dfnew:
0 6
1 12
2 18
3 24
4 30
我在下面尝试过类似的事情,不同类型的循环太多了,无法在此处显示:
df.iloc[0:5,1:6]
但这给了我所有的行和所有的列,我只需要一个配对值。
谢谢,
IIUC,你可以使用 numpy.diag
:
import numpy as np
out = pd.Series(np.diag(df.drop(columns='lat')), index=df.index)
输出:
0 6
1 12
2 18
3 24
4 30
如果您想要 lat-long 对,那么也许:
out = pd.DataFrame({'lat': df['lat'], 'long': np.diag(df.drop(columns='lat'))})
输出:
lat long
0 5 6
1 10 12
2 15 18
3 20 24
4 25 30
我相信这很容易,但找到或发现答案却不容易!我正在尝试 select 来自表示纬度(行:5,10,15 等)和经度(列:-98,-97, -96 等)。假设我的 df 看起来像这样:
df:
lat -98 -97 -96 -95 -94
0 5 6 7 8 9 10
1 10 11 12 13 14 15
2 15 16 17 18 19 20
3 20 21 22 23 24 25
4 25 26 27 28 29 30
要通过单行和单列迭代提取的对,我需要以下内容:
dfnew:
0 6
1 12
2 18
3 24
4 30
我在下面尝试过类似的事情,不同类型的循环太多了,无法在此处显示:
df.iloc[0:5,1:6]
但这给了我所有的行和所有的列,我只需要一个配对值。 谢谢,
IIUC,你可以使用 numpy.diag
:
import numpy as np
out = pd.Series(np.diag(df.drop(columns='lat')), index=df.index)
输出:
0 6
1 12
2 18
3 24
4 30
如果您想要 lat-long 对,那么也许:
out = pd.DataFrame({'lat': df['lat'], 'long': np.diag(df.drop(columns='lat'))})
输出:
lat long
0 5 6
1 10 12
2 15 18
3 20 24
4 25 30