在Pandas DataFrame中根据索引名称选择列值。

3

我有一个名为score_df的DataFrame,其中只有一列名为Score,索引名称如下所示

           Score
year       0.029827
yesterday  0.029827
you        0.089482
zeros      0.029827
zones      0.029827

我有另一个名为df的数据框,其中有一列名为df['keywords'],包含各种关键词。我需要迭代这一列,并在score_df的索引中搜索,如果索引与关键词匹配,则将其Score值附加到列表中。我正在使用以下代码。

for key_w in df['keyword'].to_list():
    result = score_df.loc[key_w, :]

但是会出现KeyError: 'keyword value'的错误。请问有人能够帮我选择所需的值吗?谢谢


错误出在 print(df['keyword']) 上吗? - jezrael
2个回答

2

我认为你需要使用默认的内部连接 DataFrame.merge

print (score_df)
              Score
year       0.029827
yesterday  0.029827
you        0.089482
zeros      0.029827
zones      0.029827

print (df)
     keyword
0      aaaaa
1  yesterday
2        you

print (score_df.merge(df, left_index=True, right_on='keyword'))
      Score    keyword
1  0.029827  yesterday
2  0.089482        you

L = score_df.merge(df, left_index=True, right_on='keyword')['Score'].tolist()
print (L)
[0.029827, 0.089482]

或者通过 Index.isinboolean indexing 在列 keyword 中选择索引:

L = score_df.loc[score_df.index.isin(df['keyword']), 'Score'].tolist()

0
您可以使用方法filter。例如:

df1

   col
A    0
B    1
C    2

df2

  keys
0    A
1    B
2    Z


df1.filter(df2['keys'], axis=0)

输出:

   col
A    0
B    1

使用 tolist() 将其转换为列表


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接