簡體   English   中英

Python在2個數據框中比較變量

[英]Python comparing variables in 2 dataframe

我正在嘗試比較2個數據框的值。 如果任何值不同,我將返回該行。

df1
     Value1 Value2
Name     
a      1      1
b      1      2
c      0      1

df2
     Value Value2
Name     
a      1      1
b      1      1
c      1      1

我做了df1 == df2

df3
     Value Value2
Name
a    True  True 
b    True  False
c    False True

我只想返回b和c,該怎么辦? 我不想做

df3[(df3['Value']==False)|(df3['Value2'==False)] 

因為我可能有兩個以上的列,並且列名稱可能不同

假設您有一個數據文件(d3.txt)或(行)之類的數據列表,

line = [i.strip().split() for i in open("d3.txt").readlines()]

print line 
[['#df3'], ['#', 'Value', 'Value2'], ['#Name'], ['#a', 'True', 'True'], ['#b', 'True', 'False'], ['#c', 'False', 'True']]

 for i in line[:][:]:
    mydict[i[0]] = ",".join(li[li.index(i)][1:])

我剛剛創建了字典。 所以你可以打電話

print mydict
print mydict['#a'] #Depend of which name you want to look. 

輸出是

{'#': 'Value,Value2', '#c': 'False,True', '#b': 'True,False', '#a': 'True,True', '#Name': '', '#df3': ''}
True,True

或者您可以不創建字典就這樣做,

for n in range(len(line)):
    if (line[n][0] == '#c' or line[n][0]== '#b'):
        print line[n][:]

輸出是(也許這就是您想要的):

['#b', 'True', 'False']  
['#c', 'False', 'True']

我認為這應該做到:

df3[~df3.all(axis=1)]

暫無
暫無

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

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