如何查找 DataFrame 列中所有唯一的数据类型?

Rak*_*sha 9 python types dataframe pandas

例如:

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
Run Code Online (Sandbox Code Playgroud)

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

现在,df.dtypes返回

a    float64
b      int64
c     object
dtype: object
Run Code Online (Sandbox Code Playgroud)

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

喜欢

a    int64, float64
b    int64
c    int64, str, bool
Run Code Online (Sandbox Code Playgroud)

Dee*_*ace 6

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

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

print(df.applymap(type))
Run Code Online (Sandbox Code Playgroud)

输出

                 a              b               c
0  <class 'float'>  <class 'int'>   <class 'int'>
1  <class 'float'>  <class 'int'>   <class 'str'>
2  <class 'float'>  <class 'int'>  <class 'bool'>
Run Code Online (Sandbox Code Playgroud)

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

Python 中没有“声明”这样的东西。int(1)(几乎)与 没有什么不同1。列a显示为,float64因为最后一个元素是0.1。这会导致将和pandas转换为(因为无法转换为)。15float0.1int