分配给 DataFrame 不起作用,但 dtypes 已更改。
数据科学的新手,我想将 分配target_frame给empty_frame,但它在再次分配之前不起作用。并且在分配过程中,dtypesofempty_frame已从int32变为float64并最终设置为int64。
我尝试将我的模型简化为下面的代码,它们有同样的问题。
import pandas as pd
import numpy as np
dataset = [[[i for i in range(5)], ] for i in range(5)]
dataset = pd.DataFrame(dataset, columns=['test'])
empty_numpy = np.arange(25).reshape(5, 5)
empty_numpy.fill(np.nan)
# Solution 1: change the below code into 'empty_frame = pd.DataFrame(empty_numpy)' then everything will be fine
empty_frame = pd.DataFrame(empty_numpy, columns=[str(i) for i in range(5)])
series = dataset['test']
target_frame = pd.DataFrame(list(series))
# Solution 2: run `empty_frame[:] = target_frame` twice, work fine to me.
# ==================================================================
# First try.
empty_frame[:] = target_frame
print("="*40)
print(f"Data types of empty_frame: {empty_frame.dtypes}")
print("="*40)
print("Result of first try: ")
print(empty_frame)
print("="*40)
# Second try.
empty_frame[:] = target_frame
print(f"Data types of empty_frame: {empty_frame.dtypes}")
print("="*40)
print("Result of second try: ")
print(empty_frame)
print("="*40)
# ====================================================================
但是当我第一次尝试时它不起作用。
这个问题有两种解决方案,但我不知道为什么:
正如我在我的代码中展示的那样,在一次运行中尝试两次分配。
创建时删除列的名称empty_frame
。
我想弄清楚两件事:
为什么empty_frame
的数据类型改变了。
为什么我的代码中显示的解决方案可以解决这个分配问题。
绝地无双
相关分类