我想比较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
答案 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
进行比较,并计算案例数其中相应列中的值匹配。
如果是这样,您可以numpy
向sum
广播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"