【问题标题】:How to find all unique datatypes in a DataFrame column? [duplicate]如何在 DataFrame 列中查找所有唯一数据类型? [复制]
【发布时间】:2019-02-03 01:23:28
【问题描述】:

例如:

df = pd.DataFrame([[int(1),2,3],[int(5),6,'a'],[0.1,4,True]], columns = list("abc"))
df
   a    b  c
0  1.0  2  3
1  5.0  6  a
2  0.1  4  True

(附带问题:为什么不声明 int 做任何事情?)

现在,df.dtypes 回归

a    float64
b      int64
c     object
dtype: object

但实际上是否可以在一列中列出所有不同的数据类型?

喜欢

a    int64, float64
b    int64
c    int64, str, bool

【问题讨论】:

  • @jpp,啊,级长。由于某种原因,我找不到关于 SO 的确切问题。 Prolly 因为我没有使用“子类型”这个词。谢谢!我不只是在寻找对象,所以它可能会有所不同。喜欢include=[df[c].dtype for c in df.columns]
  • 我会有更好的解决方案,但不能直接回答(感谢 stackoverflow),对不起。

标签: python pandas dataframe types


【解决方案1】:

您可以使用.applymap(type) 取回具有原始数据框中各个值类型的数据框:

df = pd.DataFrame([[1, 2, 3],[5, 6, 'a'],[0.1, 4, True]], columns = list("abc"))

print(df.applymap(type))

输出

                 a              b               c
0  <class 'float'>  <class 'int'>   <class 'int'>
1  <class 'float'>  <class 'int'>   <class 'str'>
2  <class 'float'>  <class 'int'>  <class 'bool'>

附带问题:为什么声明 int 不做任何事情?)

在 Python 中没有“声明”之类的东西。 int(1)(几乎)与1 没有什么不同。列a 显示为float64,因为最后一个元素是0.1。这会导致pandas15 转换为float(因为0.1 无法转换为int)。

【讨论】:

  • 那行得通 :) 每一列是否有一个单独的行来做.unique()
  • @Raksha 这应该是一个单独的问题,有自己的预期输入和输出
  • 你是什么意思?这就是问题>.> ...预期结果只列出了独特的结果,而不是每个条目都有一个<.>
  • @Raksha 最初的问题是关于类型的,它没有以任何方式提及唯一性。
  • 呈现的结果暗示了它XD
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 2016-05-31
相关资源
最近更新 更多