我有一個這樣的資料框(列不是并排的):
Num A Num B Num C Marked
0 213 314 512
1 612 516 713
2 613 678 125
3 163 813 312
和一個像 list = [612,813,512,713]
我現在想比較資料框中是否存在串列中的值,并將其標記為 1,否則標記為 0,以便輸出為:
Num A Num B Num C Marked
0 213 314 512 1
1 612 516 713 1
2 613 678 125 0
3 163 813 312 1
我只發現了如何用一列來做到這一點:
import pandas as pd
import numpy as np
path = "path"
wb = pd.ExcelFile(path)
df = wb.parse("Sheet1")
list = [612,813,512,713]
df['Marked'] = df.Num_A.isin.(list).astype(int)
你怎么能讓這個考慮所有列?
提前致謝!
uj5u.com熱心網友回復:
您可以使用np.isin方法檢查列中是否lst存在數字df,然后將其轉換為整數值:
df['Marked'] = np.isin(df.values,lst).any(axis=1).astype(int)
uj5u.com熱心網友回復:
生成一個 2. df,在那里使用 isin,為第二個資料幀的列添加前綴,然后將它們連接在一起:
lst = [612,813,512,713]
df.join(df.isin(lst).add_prefix('Marked_'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/380369.html
上一篇:如果單元格為空則隱藏行
