python/Pandas/一维 Dataframe

83qze16e  于 2022-11-27  发布在  Python
关注(0)|答案(4)|浏览(200)

创建2维 Dataframe 可以正常工作:

y = np.array([[1,2],[3,4]])
df = pd.DataFrame( y, index=[1,2], columns=["a","b"] )
print (df)

但是,如果我尝试创建一维 Dataframe ,我会收到一条错误消息:

z = np.array([5,6])
df2 = pd.DataFrame( z, index=[3], columns=["a","b"])
print (df2)

Error message: Shape of passed values is (1, 2), indices imply (2, 1)

我试探着:

z = np.array([[5],[6]])

但我得到了相同的错误消息。
我创建一个一维 Dataframe 的原因是,我可以向现有的 Dataframe 追加一行。它不允许我追加一个列表或数组,所以我必须首先将其转换为 Dataframe 。但我也不能这样做
我用的是Python

ilmyapht

ilmyapht1#

只是添加[]

z = np.array([5,6])
df2 = pd.DataFrame( [z], index=[3], columns=["a","b"])
df2
Out[67]: 
   a  b
3  5  6
92dk7w1h

92dk7w1h2#

无法从1D数组创建 Dataframe 。请在将数组传递给构造函数之前向数组添加另一个维:

pd.DataFrame(z[np.newaxis,:], index=[3], columns=["a","b"])
#   a  b
#3  5  6
tyky79it

tyky79it3#

一个替代解决方案是切换索引和列并应用转置。

z = np.array([5,6])
df2 = pd.DataFrame(z, columns=[3], index=["a","b"]).T
df2

fcy6dtqo

fcy6dtqo4#

基准测试!!!

TLDR:使用np.atleast_2d()

z = np.array([5,6])
%timeit pd.DataFrame([z], index=[3], columns=["a","b"])
%timeit pd.DataFrame(np.atleast_2d(z), index=[3], columns=["a","b"])
%timeit pd.DataFrame(z[np.newaxis,:], index=[3], columns=["a","b"])

# 1.17 ms ± 107 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
# 754 µs ± 49.2 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
# 878 µs ± 183 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

相关问题