为什么DataFrame更改对象的所有输入的数据类型?

时间:2018-11-23 23:18:39

标签: python pandas numpy dataframe series

我将具有不同数据类型,文本,整数的numpy数组和pd.Series传递给pd.DataFrame,然后将其输出为具有所有对象数据类型的DataFrame。为什么这样做,并且我能做些什么来保留原始数据类型?

pd.DataFrame(np.c_[X, TotalSF, TotalBaths, HasFire], columns=(list(X.columns) + ['TotalSF', 'TotalBaths', 'HasFire']))

X是一个二维数组,其中一些值为文本,有些为数字。 TotalSF,TotalBaths和HasFire是以数字为值的熊猫系列。

1 个答案:

答案 0 :(得分:0)

数据框适用于常规数据类型,如果要更改数据框数据类型,请使用

pandas.DataFrame.astype(target type)

使用和不使用astype方法跟踪以下代码:

import pandas as pd
data = pd.DataFrame(data=[["red", "apple"], ["yellow", "orange"], ["blue", "banana"], ["green", "avocado"]],
                    columns=["color", "fruitN"])
# data = data.set_index("fruitN")
file_1 = ["akee", "apricot", "avocado"]
file_2 = ["avocado", "bilberry", "banana", "blackberry"]
file_3 = ["blackberry", "coconut", "cranberry"]
file_1_df = pd.DataFrame(data=file_1, columns=["type_1"])
file_2_df = pd.DataFrame(data=file_2, columns=["type_2"])
file_3_df = pd.DataFrame(data=file_3, columns=["type_3"])
l = [file_1_df, file_2_df, file_3_df]
for x, y in enumerate(l):
    data['c' + str(x + 1)] = data.fruitN.isin(y.iloc[:, 0].tolist()).astype(int)

data = data["c2"].astype(int)
print(data)