pandas - 如何在 Pandas 中创建仅包含 Nones 但具有特定类型的列?
问题描述
我正在为单元测试创建一个表。在一种情况下,我想测试如果一列中的所有值都是 Null,但类型正确,会发生什么。如果我创建一个这样的测试表:
df0 = pandas.DataFrame(
columns=["a", "b", "key"],
data=[{"a": 4, "b": 5, "key": 1}, {"a": 3, "b": 9, "key": 2}],
)
...然后列b的类型默认为object
,只是因为没有信息让 pandas 知道它应该是哪种列。
有没有我可以用来告诉 Pandas 列的类型应该是什么类型的语法?根据文档,这样的事情应该可以工作:
df1 = pandas.DataFrame(
columns=["a", "b", "key"],
data=[{"a": 7, "b": None, "key": 3}, {"a": 7, "b": None, "key": 1}],
dtype={"b":int}
)
不幸的是,这给出了一个错误:
TypeError: object of type 'type' has no len()
那么正确的方法是什么?理想情况下,我想在一个语句中完成,但是创建表然后设置类型是可以的。
更新0:
感谢@anky的建议,我尝试了这个:
df1 = pandas.DataFrame(
columns=["a", "b", "key"],
data=[{"a": 7, "b": None, "key": 3}, {"a": 7, "b": None, "key": 1}]
).astype(dtype={"b":numpy.int64})
但我得到这个错误:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
更新 1:
这种基于@Aditya K 建议的语法也不太正确:
df1 = pandas.DataFrame(
columns=["a", "b", "key"],
data=[{"a": 7, "b": None, "key": 3}, {"a": 7, "b": None, "key": 1}],
dtype={"b":numpy.int64}
)
给出这个错误:
TypeError: object of type 'type' has no len()
解决方案
感谢@Anky 提供此解决方案:
df1 = pandas.DataFrame(
columns=["a", "b", "key"],
data=[{"a": 7, "b": None, "key": 3}, {"a": 7, "b": None, "key": 1}],
).astype({"b":"Int64"})
这给出了所需的列类型:
解决方案
推荐阅读
- laravel - Nuxt Auth + Laravel Passport - 本地方案与护照提供者
- python - pygame按住lkey延迟
- javascript - 关于处理来自 DOM 事件的错误的问题
- r - “survival”包中的 survfit 函数出错:“strata(mf[ll]) 中的错误:所有参数的长度必须相同”
- python - 在多个数据帧中按相同序列查找行
- react-native - 带有 M1 芯片的 Mac 上的 react-native-plaid-link-sdk
- python - ModuleNotFoundError:没有名为“应用程序”的模块 [将 Django 部署到 AWS]
- reactjs - 反应 i18 在循环内翻译动态值
- python - Selenium 定位不可点击的元素
- python - Django:“[Errno 13] Permission denied: '/samples'” 在通过模型上传文件期间