当前位置: 首页 > 面试题库 >

为什么在pandas数据框列中应用更改dtype

胡光霁
2023-03-14
问题内容

我有以下数据框:

import pandas as pd
import numpy as np
df = pd.DataFrame(dict(A = np.arange(3), 
                         B = np.random.randn(3), 
                         C = ['foo','bar','bah'], 
                         D = pd.Timestamp('20130101')))

print(df)

   A         B    C          D
0  0 -1.087180  foo 2013-01-01
1  1 -1.343424  bar 2013-01-01
2  2 -0.193371  bah 2013-01-01

dtypes 对于列:

print(df.dtypes)
A             int32
B           float64
C            object
D    datetime64[ns]
dtype: object

但是使用apply它们之后,所有更改都变为对象:

print(df.apply(lambda x: x.dtype))
A    object
B    object
C    object
D    object
dtype: object

为什么dtypes要反对?我认为apply应该只考虑列。

pandas 0.17.1
python 3.4.3


问题答案:

您可以在此处使用参数reduce=False和更多信息:

print (df.apply(lambda x: x.dtype, reduce=False))

A             int32
B           float64
C            object
D    datetime64[ns]
dtype: object

在较新版本的熊猫中可以使用:

print (df.apply(lambda x: x.dtype, result_type='expand'))


 类似资料:
  • 问题内容: 我正在寻找编写一个快速脚本,该脚本将通过具有两列的csv文件运行,并为我提供行,其中B列中的值从一个值切换为另一个: 例如: 数据框: 会告诉我更改发生在第2行和第3行之间。我知道如何使用for循环获取这些值,但我希望有解决此问题的更Python方式。 问题答案: 您可以为差异创建一个新列 这将是您所需的行

  • 问题内容: 我想将表示为列表列表的表转换为。作为一个极其简化的示例: 将列转换为适当类型的最佳方法是什么(在这种情况下,将列2和3转换为浮点数)?有没有一种方法可以在转换为DataFrame时指定类型?还是先创建DataFrame然后遍历各列以更改各列的类型更好?理想情况下,我想以动态方式执行此操作,因为可以有数百个列,并且我不想确切指定哪些列属于哪种类型。我可以保证的是,每一列都包含相同类型的值

  • 问题内容: 我在将大写字母应用于DataFrame中的列时遇到麻烦。 数据框为。 是需要应用大写的列标题。 问题是值由三个字母和三个数字组成。例如是值之一。 我收到一个错误: 如何将大写字母应用于DataFrame列中的前三个字母? 问题答案: 这应该工作: 并且您是否希望所有名称都使用大写格式:

  • 问题内容: 我有一个如下的Pandas DataFrame TimeReviewed是系列类型 我已经在下面尝试过,但是它仍然没有改变Series类型 如何将df.TimeReviewed更改为DateTime类型并分别拉出年,月,日,时,分,秒?我是python的新手,感谢您的帮助。 问题答案: 您不能:按定义列是。也就是说,如果使(所有元素的类型)类似日期时间,则可以通过访问器(docs)访问

  • 在大多数情况下,似乎可以加速数据帧上的操作过程,但当我使用时,我没有发现加速。这是我的例子;我有一个包含两列的数据框: 我想做的是通过在上实现函数来计算数据帧中每一行的值,结果将除以中的值。例如,第一行的结果应该是。 这是我的函数,将在中调用: 然后我在中调用: 但是,我发现在这种情况下,比for循环慢得多,比如 有人能解释原因吗?

  • 我想将一个表(表示为列表的列表)转换为。作为一个极其简化的例子: 将列转换为适当类型的最佳方法是什么,在本例中,列2和列3转换为浮点?在转换为DataFrame时是否有方法指定类型?还是先创建DataFrame,然后循环遍历列以更改每列的类型更好?理想情况下,我希望以动态的方式执行此操作,因为可以有数百个列,而我不想确切地指定哪些列属于哪种类型。我所能保证的是每列都包含相同类型的值。