比较两个数据框的值

时间:2020-09-05 12:54:55

标签: python pandas

如何在2个数据帧之间按0.1比较?

df1

L_ID    L_Values
1       20-25
2       30-35
3       25
4       45
5       30-45

df2 从df1中的L_ID代表df2中的1,2,3,4,5列

Name    1   2   3   4   5
John    25  25  20  30  45
Zara    20  NaN NaN 25  30
Kim     NaN NaN NaN 45  50

我想比较df2中的值,它是否在df1中? 是= 0,否= 1

期待df3中的输出

Name    1   2   3   4   5
John    0   1   1   1   0
Zara    0   1   1   1   0
Kim     1   1   1   0   1

1 个答案:

答案 0 :(得分:0)

以下应该可以工作

只要照顾南的状况

df3.col.iloc[i]==df3.col.iloc[i]

如果Nan是sting格式,只需将这段代码替换为

if df3.col.iloc[i]!='Nan'

代码是:

d={}
for i in range len(df1):
    d[df1.L_ID.iloc[i]]=[]
    temp=df1.L_Values.iloc[i].split('-')
    if len(temp)==2:
        d[df1.L_ID.iloc[i]]=temp
    else:
        d[df1.L_ID.iloc[i]]=[temp[0], temp[0]]

df3=df2.copy()

for i in range(len(df3)):
    for col in df3.columns:
        if df3.col.iloc[i]==df3.col.iloc[i] and d[col][0] <= df3.col.iloc[i] <= d[col][1]:
            df3.col.iloc[i]=0
        else:
            df3.col.iloc[i]=1 
print(df3)