以下是我正在使用的代码:
while
我得到的输出是:
do-while
我期望的输出是:
import numpy as np
import pandas as pd
from pandas import DataFrame, Series
animals = DataFrame(np.arange(16).resize(4, 4), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
但是,如果我只跑:
W X Y Z
Dog NaN NaN NaN NaN
Cat NaN NaN NaN NaN
Bird NaN NaN NaN NaN
Mouse NaN NaN NaN NaN
我得到的输出是:
W X Y Z
Dog 0 1 2 3
Cat 4 5 6 7
Bird 8 9 10 11
Mouse 12 13 14 15
答案 0 :(得分:3)
使用reshape
import pandas as pd
animals = pd.DataFrame(np.arange(16).reshape(4, 4), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
np.resize(np.arange(16),(4, 4))
使用调整大小,您需要将数组作为参数传递
import pandas as pd
animals = pd.DataFrame(np.resize(np.arange(16),(4, 4)), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
ndarray.resize()将执行就地操作。因此,预先计算大小,然后创建一个数据框
a=np.arange(16)
a.resize(4,4)
import pandas as pd
animals = pd.DataFrame(a, columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
答案 1 :(得分:3)
摘自resize的文档:“就地更改数组的形状和大小。”
因此,您对resize
的调用将返回None
。
您想要reshape
。如np.arange(16).reshape(4, 4)
答案 2 :(得分:1)
只需添加到以上答案中,docs代表resize
:
ndarray.resize(new_shape, refcheck=True)
就地更改数组的形状和大小。
因此,与reshape
不同,resize
不会创建新的数组。实际上np.arange(16).resize(4, 4)
会产生None
,这就是为什么要获得Nan
值的原因。
使用reshape
返回一个新数组:
ndarray.reshape(shape, order='C')
以新形状返回包含相同数据的数组
。