Python 在DataFrame中组合多种数据类型
我希望根据数据是否为数字来组合数据框中的列,例如:Python 在DataFrame中组合多种数据类型,python,numpy,pandas,Python,Numpy,Pandas,我希望根据数据是否为数字来组合数据框中的列,例如: 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()) 这会给出所需的输出,但似乎应该有更好的方法来写入最
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标量类型,而不是检查数据类型是否在指定的numpy数据类型列表中?您可以使用:
您可以使用:
与其在这里应用,我可能会用一个简单的列表来检查每一列是否是数字的,并将这些路径分开,然后再将它们合并回来。对于较大的帧,这将更有效
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\u numeric\u dtype函数,但我不确定它在哪里
现在,您可以关注这些并可能重新编制索引:
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
与其在这里应用,我可能会用一个简单的列表来检查每一列是否是数字的,并将这些路径分开,然后再将它们合并回来。对于较大的帧,这将更有效
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\u numeric\u dtype函数,但我不确定它在哪里
现在,您可以关注这些并可能重新编制索引:
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
df.\u获取数字数据\u谢谢你们两位。这个私有方法真的很管用。df.\u获取\u数值\u数据谢谢你们两位。这种私有方法确实起到了作用。