如何解决如何获取和比较pyspark中两个数据框中相似列的所有值的数据类型
我有两个具有相同列名的文件。我通过读取这些CSV
文件创建了两个数据帧。考虑一个名为Units Sold
的列。默认情况下,当我检查架构时,其数据类型为string
。现在,我要遍历两个数据帧中此列的每一行数据,并检查数据类型是否正确。
如果一个文件中的一列为numeric
,则第二个中的列应该相同,如果一个文件的值为345
而另一个文件的值为345.00
,则高亮显示,因为此处的数据类型不同。我尝试了以下方法,但这很通用:
types1=[df1.dtypes]
#print(types1)
types2 =[df2.dtypes]
#print(types2)
if(types1==types2):
print("Data types is equal for both the files..")
else:
print("Data types is NOT equal for both the files..")
下面是列和示例数据:
Units Sold
8446
3018
1517
3322
9845
9528
我没有发现与我的问题有关的任何帖子。任何帮助表示赞赏。
解决方法
我遇到了同样的问题,不得不循环遍历各列。我遇到的问题是,由于NA值指示符,某些数字列有时被读取为字符串。
这是我用于检查类型的代码块(我假设2个数据框具有相同的列,且名称完全相同),我还对其进行了调整,使其具有与您相同的输出:
df1_types = pd.DataFrame(df1.dtypes,columns=["colname","type"])
df2_types = pd.DataFrame(df2.dtypes,"type"])
flag = True
for index,row in df1_types.iterrows():
if row['type'] != df2_types[df2_types['colname'] == row['colname']]['type'].values[0]:
# Add numeric check here if needed
flag = False
break
if flag:
print("Data types is equal for both the files..")
else:
print("Data types is NOT equal for both the files..")
您必须在注释区域中为数字列添加一些自定义检查。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。