我有以下熊猫数据框:
#!/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。
答案 0 :(得分:1)
我们可以从您的ID
和X
列中传递一个字典,然后将它们映射到新列中
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