我有一个熊猫数据框,如下所示:
s = index_df[(index_df['id2'].values == result[z][3])]
print s.iloc[:, [0]]
这将给我结果
id1
36 14559
我正尝试将值14559存储到具有以下内容的变量中:
value = s.iloc[:, [0]]
但是它一直给我一个错误:
ValueError: Incompatible indexer with DataFrame
有什么主意我能解决这个问题吗?
编辑:
我的数据帧声明如下:
结果:
result=[(fuzz.WRatio(n, n2),n2,sdf.index[x],bdf.index[y])
for y, n2 in enumerate(Col2['CSGNE_NAME']) if fuzz.WRatio(n, n2)>80 and len(n2) >= 2
]
这就是我声明并附加到数据框的方式:
index_df = pd.DataFrame(columns=['id1','id2', 'score'])
index_df = index_df.append({'id1':result[z][2], 'id2':result[z][3], 'score':result[z][0]}, ignore_index=True)
答案 0 :(得分:1)
我认为需要:
s.iloc[:, 0]
或者:
s.iloc[0, 0]
或将值转换为列表,然后使用next
提取第一个值:
L = index_df[(index_df['id2'].values == result[z][3])].values.tolist()
#use parameter if not matched condition and returned empty val
out = next(iter(L), 'no matched value')
示例:
index_df = pd.DataFrame({'id2':[1,2,3,2],
'id1':[10,20,30,40]})
print (index_df)
id2 id1
0 1 10
1 2 20
2 3 30
3 2 40
#if possible specify column name with .loc (`id1`)
L = index_df.loc[index_df['id2'].values == 2, 'id1']
#use parameter if not matched condition and returned empty val
#out = next(iter(L), 'no matched value')
print (out)
20