Dataframe 数据帧索引值
我有一个数据帧 df=pd.DataFrame({'Event1':['Music'、'Poetry'、'treaty'、'smicle'], “事件2”:[诗歌、音乐、舞蹈、戏剧]) 我需要创建一个名为“Val”的新列,该列包含事件2中发生在事件1中的元素的索引。例如,Val将是Dataframe 数据帧索引值,dataframe,indexing,Dataframe,Indexing,我有一个数据帧 df=pd.DataFrame({'Event1':['Music'、'Poetry'、'treaty'、'smicle'], “事件2”:[诗歌、音乐、舞蹈、戏剧]) 我需要创建一个名为“Val”的新列,该列包含事件2中发生在事件1中的元素的索引。例如,Val将是 “Val”:[1,0,NaN,2]。以下是一种方法: 解决方案1 解决方案2 我得到一个索引错误,索引0超出了大小为0My的轴0的界限。问题是我在Event2中有不在Event1中的元素。我该如何更正???@Nand
“Val”:[1,0,NaN,2]。以下是一种方法: 解决方案1 解决方案2
我得到一个索引错误,索引0超出了大小为0My的轴0的界限。问题是我在Event2中有不在Event1中的元素。我该如何更正???@NandaNathan不知道为什么会出现错误,可能是您的数据缺少值。你能检查一下吗?你能用一个解决方案失败的例子来更新这个例子吗?我将很高兴根据需要修改它感谢YOLO…这是更新版本…df=pd.DataFrame({'Event1':['Music'、'Poetry'、'Theatre'、'喜剧']、'Event2':[Poetry、Music、Dance、Theater]})我需要创建一个名为'Val'的新列,该列包含事件1中事件2的元素索引。例如,Val将是“Val”:[1,0,NaN,2]。
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
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