基于列值访问行

时间:2019-10-07 15:30:20

标签: pandas

我有以下熊猫数据框:

#!/usr/bin/expect

# Spawn Python and await prompt
spawn mono OpenSim.exe

expect_background {
    "Now recording all stats to file every {0}ms" { sleep 10 ; send "stats record stop\n" ; expect "Stopped recording stats to file." {sleep 5 ; send "quit\n"} }
}

interact

现在,我想从相邻列(即该列的ID等于Neighbor的值)所引用的行中创建一个新列“ y”,其中每一行都是字段x的值,例如:对于第0行(ID 1),“邻居”为3,因此“ y”应为7。 因此,所得数据帧应具有列y = [7,5,6]。 我可以不使用df.apply来解决此问题吗? (因为这对于我的大数据框而言非常耗时。) 我想使用

data = {'ID': [1, 2, 3], 'Neighbor': [3, 1, 2], 'x': [5, 6, 7]}

但这会返回NaN。

1 个答案:

答案 0 :(得分:1)

我们可以从您的IDX列中传递一个字典,然后将它们映射到新列中

your_dict_ = dict(zip(df['ID'],df['x']))
print(your_dict_)
{1: 5, 2: 6, 3: 7}

然后,我们可以使用.map列作为键,使用Neighbor将这些列传递给您。

df['Y'] = df['Neighbor'].map(your_dict_)
print(df)
    ID  Neighbor  x  Y
0   1         3  5  7
1   2         1  6  5
2   3         2  7  6