gpt4 book ai didi

python - 在 pandas DataFrame 中组合多种数据类型

转载 作者:行者123 更新时间:2023-11-28 22:50:22 24 4
gpt4 key购买 nike

我想根据数据是否为数字组合数据框中的列,例如:

import pandas as pd
import numpy as np

x = {'a':[1,2], 'b':['foo','bar'],'c':[np.pi,np.e]}
y = pd.DataFrame.from_dict(x)
y.apply(lambda x: x.sum() if x.dtype in (np.int64,np.float64) else x.min())

这给出了所需的输出,但似乎应该有更好的方法来编写最后一行——是否有一种简单的方法来检查数字是否为 numpy 标量类型而不是检查 dtype 是否在指定的 numpy dtype 列表?

最佳答案

而不是在这里应用,我可能会通过简单的列表理解来检查每一列是否为数字,并将这些路径分开,然后将它们连接回去。这对于较大的框架会更有效。

In [11]: numeric = np.array([dtype in [np.int64, np.float64] for dtype in y.dtypes])

In [12]: numeric
Out[12]: array([True, False, True])

可能有一个 is_numeric_dtype 函数,但我不确定它在哪里..

In [13]: y.iloc[:, numeric].sum()
Out[13]:
a 3.000000
c 5.859874
dtype: float64

In [14]: y.iloc[:, ~numeric].min()
Out[14]:
b bar
dtype: object

现在您可以连接这些并可能重新索引:

In [15]: pd.concat([y.iloc[:, numeric].sum(), y.iloc[:, ~numeric].min()]).reindex(y.columns)
Out[15]:
a 3
b bar
c 5.859874
dtype: object

关于python - 在 pandas DataFrame 中组合多种数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22720931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com