【问题标题】:python- get column dataType from a dataframepython-从数据框中获取列数据类型
【发布时间】:2018-12-10 06:38:19
【问题描述】:

我正在尝试从数据框中获取列数据类型

这是一个示例代码:

    print training_data.schema
    print 'fields'
    print training_data.schema.fields
    print 'names'
    print training_data.schema.names

上面的代码打印如下: StructType(List(StructField(id,LongType,true),StructField(text,StringType,true),StructField(label,DoubleType,true))) 字段 [StructField(id,LongType,true), StructField(text,StringType,true), StructField(label,DoubleType,true)] 名字 ['id', '文本', '标签']

但是我怎样才能得到标签列的数据类型呢?非常感谢您的宝贵时间。

问候

【问题讨论】:

标签: python python-3.x pyspark pyspark-sql


【解决方案1】:

以下是如何获取 pandas 数据框的列名和列类型的复制粘贴示例:

import pandas as pd

list = [['Tom',34, 45.5], ['Jack',23, 60.5]]
df = pd.DataFrame(list, columns=["Name","Age","Pay"])

for column in df.columns:
    print("Column ", column, "is dtype:", df[column].dtype.name)

结果:

Column  Name is dtype: object
Column  Age is dtype: int64
Column  Pay is dtype: float64

【讨论】:

    【解决方案2】:

    感谢所有回复。 我找到了以下解决方案,希望对任何寻找答案的人有所帮助:

           for f, v in zip(df.schema.fields, df.schema.names):
              if v == colname:
                datatype = f.dataType
    

    【讨论】:

      【解决方案3】:
      df['col label'].dtype
      

      是一种选择。

      编辑

      name_dtype = df['col label'].dtype.name
      

      【讨论】:

      • 我试过这个,但它打印:Column
      • 试过了,它打印出>
      • 糟糕,我想我们可能在谈论不同的数据帧。我的回答是关于 Pandas 数据帧而不是 SQL 数据帧。我的错。如果你安装了 Pandas,你总是可以将你的 SQL 数据框转换为 Pandas 数据框并尝试我的解决方案。
      • 哦,好的,我会试试的。对不起,我是这条蟒蛇的新手。 SQL数据框和pandas数据框有什么区别?
      • 如何获取 SQL 数据框中的数据类型?
      猜你喜欢
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多