gpt4 book ai didi

Python - pandas - 将系列追加到空白 DataFrame

转载 作者:太空狗 更新时间:2023-10-29 22:26:18 27 4
gpt4 key购买 nike

假设我在 python 中有两个 pandas 系列:

import pandas as pd
h = pd.Series(['g',4,2,1,1])
g = pd.Series([1,6,5,4,"abc"])

我可以只用 h 创建一个 DataFrame,然后将 g 附加到它:

df = pd.DataFrame([h])
df1 = df.append(g, ignore_index=True)

我得到:

>>> df1
0 1 2 3 4
0 g 4 2 1 1
1 1 6 5 4 abc

但现在假设我有一个空的 DataFrame 并且我尝试将 h 附加到它:

df2 = pd.DataFrame([])
df3 = df2.append(h, ignore_index=True)

这是行不通的。我认为问题出在倒数第二行代码中。我需要以某种方式定义空白 DataFrame 以具有适当数量的列。

顺便说一下,我尝试这样做的原因是我正在使用 requests+BeautifulSoup 从互联网上抓取文本,我正在处理它并尝试一次一行地将它写入 DataFrame。

最佳答案

因此,如果您不将空列表传递给 DataFrame 构造函数,那么它会起作用:

In [16]:

df = pd.DataFrame()
h = pd.Series(['g',4,2,1,1])
df = df.append(h,ignore_index=True)
df
Out[16]:
0 1 2 3 4
0 g 4 2 1 1

[1 rows x 5 columns]

这两种构造函数方法之间的区别似乎是索引 dtypes 的设置不同,对于空列表它是一个 Int64 没有它是一个 对象:

In [21]:

df = pd.DataFrame()
print(df.index.dtype)
df = pd.DataFrame([])
print(df.index.dtype)
object
int64

我不清楚为什么上述会影响行为(我在这里猜测)。

更新

重新审视后,我可以确认这在我看来是 pandas 版本 0.12.0 中的错误,因为您的原始代码工作正常:

In [13]:

import pandas as pd
df = pd.DataFrame([])
h = pd.Series(['g',4,2,1,1])
df.append(h,ignore_index=True)

Out[13]:
0 1 2 3 4
0 g 4 2 1 1

[1 rows x 5 columns]

我正在使用 python 3.3.5.0 运行 pandas 0.13.1 和 numpy 1.8.1 64 位,但我认为问题在于pandas,但为了安全起见,我会同时升级 pandas 和 numpy,我认为这不是 32 位与 64 位 python 的问题。

关于Python - pandas - 将系列追加到空白 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23974802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com