我有以下数据框:
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,然后循环遍历列以更改每列的类型更好?理想情况下,我希望以动态的方式执行此操作,因为可以有数百个列,而我不想确切地指定哪些列属于哪种类型。我所能保证的是每列都包含相同类型的值。