簡體   English   中英

Pandas 如果值在列 dataframe 中,則獲取行

[英]Pandas Get rows if value is in column dataframe

我有信息增益 dataframe 和 tf dataframe。 數據如下所示:

信息增益

    Term      IG
0   alqur     0.641328
1   an        0.641328
2   ayatayat  0.641328
3   bagai     0.641328
4   bantai    0.641328
5   besar     0.641328

詞頻

            A   B   A+B
ahli        1   0   1
alas        1   0   1
alqur       0   1   1
an          0   1   1
ayatayat    0   1   1
...        ... ... ...
terus       0   1   1
tuduh       0   1   1
tulis       1   0   1
ulama       1   0   1
upaya       0   1   1

假設表信息增益 = IG 和表 tf = TF

我想檢查 IG.Term 是否在 TF.index 中,然后獲取行值,所以它應該是這樣的:

    Term      A    B    A+B
0   alqur     0    1    1
1   an        0    1    1
2   ayatayat  0    1    1
3   bagai     1    0    1
4   bantai    1    1    2
5   besar     1    0    1

注意:我不再需要 IG 值了

使用boolean indexingSeries.isin過濾並將索引轉換為列:

df = TF[TF.index.isin(IG['Term'])].rename_axis('Term').reset_index()
print (df)
       Term  A  B  A+B
0     alqur  0  1    1
1        an  0  1    1
2  ayatayat  0  1    1

或者使用DataFrame.merge和默認內連接:

df = IG[['Term']].merge(TF, left_on='Term', right_index=True)
print (df)
       Term  A  B  A+B
0     alqur  0  1    1
1        an  0  1    1
2  ayatayat  0  1    1

您可以像這樣使用合並來檢查它:

ig = pandas.DataFrame([['alqur', 0.641328], ['an', 0.641328]], columns=['Term',      'IG'])
tf = pandas.DataFrame([['ahli', 1, 0, 1], ['alqur', 0, 1, 1], ['an', 0, 1, 1]], columns=['index', 'A', 'B', 'A+B'])
tf = tf.set_index('index')

rows_count, _columns_count = tf.shape
merged = tf.merge(ig, left_on='index', right_on='Term', how='inner')

合並在 ig 中不包含缺失的術語。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM