如何解决比较两个数据框的列?
我有两个数据帧,如下所示:
df1:
id,f1,f2,...,f800
0,5,5.6,..,3,7
1,2.4,1.6,1,7
2,2.3,4,4
....
n,4.7,9,8,2
df2:
id,v1,v2,v200
0,6,2
....
n,1
df1包含800个功能,而df2仅包含200个功能。第二数据帧(df2)是第一数据帧(df1)的一部分。现在,我想查找包含df2列/变量的列的位置(在df1中)。在这里,列的值应该相似,而不是列的名称。考虑到上面的示例,我想要的输出应该是“ f1和f2”或df1的列[0,1]。
有解决这个问题的主意吗?
解决方法
我会合并两个数据帧,所以我确定只有相同的索引存在
result = pd.concat([df1,df2],axis=1,join='inner')
然后您可以使用以下代码:
import pandas as pd
def getDuplicateColumns(df):
duplicateColumnNames = set()
for x in range(df.shape[1]-200):
col = df.iloc[:,x]
for y in range(df.shape[1]-200,df.shape[1]):
otherCol = df.iloc[:,y]
#if the columns are equal mark it down
if col.equals(otherCol):
duplicateColumnNames.add(df.columns.values[y])
#here you can mark down both names,so you map them
return list(duplicateColumnNames)
cols = getDuplicateColumns(result)
,然后您可以对返回的选定列进行任何操作,即删除冗余列。 200是第二个df中的预期cols数量,您可以改为将其作为参数发送。如果您确定df1中的每个col在df2中只有1个匹配项,那么您也可以在找到匹配项后中断内部循环。
,您需要将此问题分解为一部分 一个是找到共同的特征
df1 = pd.DataFrame([[0,1,2,11],[3,4,5,12],[6,7,8,13]],columns=['A','B','C','D'])
df2 = pd.DataFrame([[1,[4,[7,14]],columns=['a','b','D'])
common = set(df1.columns) & set(df2.columns)
另一个正在检查天气,这两列是否相似
if(df1[common].equals(df2[common])):
print(df1[common])
else:
print("Nothing common")
要检查多列,您可以在if条件的顶部创建一个循环。
,常用列:
common = set(df1.columns) & set(df2.columns)
要获取df2中存在的df1列:
df1[common]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。