【问题标题】:Why is DataFrame changing the datatype of all input into objects?为什么 DataFrame 将所有输入的数据类型更改为对象?
【发布时间】:2019-04-26 11:39:38
【问题描述】:

我将具有不同数据类型、文本、int 和浮点数的 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 都是以数字为值的 pandas Series。

【问题讨论】:

  • 请注意,只有当列或系列中的所有行都是浮点数时,数据框列(或系列)的数据类型才会是浮点数。与整数 dtypes 类似。基本上,如果一个系列中的一行是字符串/对象,那么整列的数据类型将是对象。

标签: python pandas numpy dataframe series


【解决方案1】:

Dataframe 与通用数据类型一起工作,如果你想改变你的 DataFrame 数据类型,请使用

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)

【讨论】:

    猜你喜欢
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    相关资源
    最近更新 更多