首页 > 解决方案 > 数据框索引值

问题描述

我有一个数据框 df = pd.DataFrame({'Event1':['Music', 'Poetry', 'Theatre', 'Comedy'], 'Event2':[Poetry, Music, Dance, Theater]})

我需要创建一个名为“Val”的新列,该列具有来自事件 2 的元素的索引,因为它发生在事件 1 中。例如 Val 将是 'Val':[1,0,NaN,2]。

标签: dataframeindexing

解决方案


这是您可以执行的一种方法:

解决方案 1

import numpy as np

df['val'] = df['Event2'].apply(lambda x: np.where(x == df['Event1'])[0][0]) 

print(df)

    Event1   Event2  val
0    Music   Poetry    1
1   Poetry    Music    0
2  Theatre   Comedy    3
3   Comedy  Theatre    2

解决方案 2

df = pd.DataFrame({'Event1':['Music', 'Poetry', 'Theater', 'Comedy'], 'Event2':['Poetry', 'Music', 'Dance', 'Theater']})

df['val'] = (df['Event2']
                 .apply(lambda x: np.argwhere(x == df['Event1']))
                 .apply(lambda x: x[0][0] if len(x)>0 else x)
                )
df['val'] = pd.to_numeric(df['val'], errors='coerce')

print(df)

    Event1   Event2  val
0    Music   Poetry  1.0
1   Poetry    Music  0.0
2  Theater    Dance  NaN
3   Comedy  Theater  2.0

推荐阅读