python—如何获取和比较pyspark中两个Dataframe中相似列的所有值的数据类型

dwbf0jvd  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(645)

我有两个列名相同的文件。我通过读取这些创建了两个Dataframe CSV 文件夹。考虑一个名为 Units Sold . 默认情况下,其数据类型为 string 当我检查模式时。现在,我要遍历这两个Dataframe中该列的每一行数据,并检查数据类型是否正确。
如果列是 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

我没有找到任何与我的问题相关的帖子。感谢您的帮助。

disbfnqx

disbfnqx1#

我也遇到了同样的问题,不得不在专栏上循环。我遇到的问题是,由于na值指示符,一些数字列有时被读取为字符串。
下面是我检查类型的代码chunck(我假设这两个Dataframe具有完全相同的名称的相同列),我还对其进行了调整,使其具有与您相同的输出:

df1_types = pd.DataFrame(df1.dtypes,columns=["colname", "type"])
df2_types = pd.DataFrame(df2.dtypes,columns=["colname", "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..")

您必须为注解区域中的数字列添加一些自定义检查。

相关问题