遍历所有数据帧列

时间:2016-01-06 21:50:54

标签: python pandas dataframe

我想比较2个给定数据帧的所有行

如何优化以下代码以动态迭代给定pandas数据帧的所有列?

df1,df2 = pd.read_csv(...)

for index2, row2 in df2.iterrows():
    for index1, row1 in df1.iterrows():
        if row1[0]==row2[0]: i = i+1
        if row1[1]==row2[1]: i = i+1
        if row1[2]==row2[2]: i = i+1
        if row1[3]==row2[3]: i = i+1
        print("# same values: "+str(i))
        i = 0

2 个答案:

答案 0 :(得分:2)

IIUC您需要检查一个数据帧的整行是否等于另一个数据帧。您可以比较两个数据帧的相等性,然后使用all方法与axis=1一起检查行,然后对结果求和:

df1 = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [2, 3, 4, 5, 6]})
df2 = pd.DataFrame({'a': [1, 5, 3, 7, 5], 'b': [2, 3, 8, 5, 6]})

In [1531]: df1 == df2
Out[1531]: 
       a      b
0   True   True
1  False   True
2   True  False
3  False   True
4   True   True

In [1532]: (df1 == df2).all(axis=1)
Out[1532]: 
0     True
1    False
2    False
3    False
4     True
dtype: bool

In [1533]: (df1 == df2).all(axis=1).sum()
Out[1533]: 2

result = (df1 == df2).all(axis=1).sum()

In [1535]: print("# same values: "+str(result))
# same values: 2

答案 1 :(得分:1)

您的嵌套for循环表示您要将第一个rows的所有DataFrame与第二个rows的所有DataFrame进行比较,并计算案例数其中相应列中的值匹配。

如果是这样,您可以numpysum广播row广播df1 rows相对于df2 sum的相同案例rows 1}},然后df1 df1.apply(lambda x: np.sum(df2.values == x.values), axis=1) DataFrames df1 = pd.DataFrame(np.random.randint(1, 5, (10, 2))) 0 1 0 2 4 1 2 3 2 4 1 3 3 3 4 3 3 5 4 4 6 2 4 7 3 4 8 3 4 9 4 1 df2 = pd.DataFrame(np.random.randint(1, 5, (10, 2))) 0 1 0 3 2 1 3 4 2 4 4 3 2 3 4 4 3 5 4 1 6 4 1 7 3 4 8 3 1 9 1 4 中的所有sum得到的总数如下:

df1

为了说明,两个随机抽样rows

df2

在将每个rows df1.apply(lambda x: np.sum(df2.values == x.values), axis=1) 0 5 1 3 2 7 3 6 4 6 5 8 6 5 7 8 8 8 9 7 df1.apply(lambda x: np.sum(df2.values == x.values), axis=1).sum() 63 SELECT [ಕ್ರಮ ಸಂಖ್ಯೆ], [ವಿದ್ಯಾರ್ಥಿಯ ಹೆಸರು] AS Name, [ರಜಿಸ್ಟರ್ ಸಂಖ್ಯೆ], [ಡೈಸ್ ಸಂಖ್ಯೆ], [ವರ್ಗ], [ಕನ್ನಡ], [ಇಂಗ್ಲೀಷ], [ಹಿಂದಿ], [ಗಣಿತ], [ವಿಜ್ಞಾನ], [ಸಮಾಜ ವಿಜ್ಞಾನ], [ದೈಹಿಕ ಶಿಕ್ಷಣ], [ಒಟ್ಟು ಅಂಕಗಳು], [ಶೇಕಡಾ], [ಶ್ರೇಣಿ], [ಒಟ್ಟು ಅಂಕಗಳು ಅಕ್ಷರದಲ್ಲಿ], [ಲ,ಕ/ಕಲಾ ಶಿಕ್ಷಣ], [ಕಂಪ್ಯೂಟರ ಶಿಕ್ಷಣ], [ಫಲಿತಾಂಶ] FROM Table11 WHERE ವಿದ್ಯಾರ್ಥಿಯ ಹೆಸರುCollate Indic_General_100_CI_AI LIKE N '%ಮ%' Accept-Language进行比较后,获取所有Accept-Language Access-Control-Expose-Headers: "Content-Type,Origin" 的{​​{1}}个等值:

Accept-Language

然后你可以对案例进行总结,或者一次性完成:

Access-Control-Expose-Headers: "Content-Type,Origin,Accept-Language"