【发布时间】:2014-01-27 02:31:12
【问题描述】:
我试图将一个系列添加到一个空的 DataFrame 并且找不到答案 在文档或其他问题中。由于您可以按行附加两个 DataFrame 或按列,似乎系列中必须缺少“轴标记”。能 任何人解释为什么这不起作用?。
import Pandas as pd
df1 = pd.DataFrame()
s1 = pd.Series(['a',5,6])
df1 = pd.concat([df1,s1],axis = 1)
#go run some process return s2, s3, sn ...
s2 = pd.Series(['b',8,9])
df1 = pd.concat([df1,s2],axis = 1)
s3 = pd.Series(['c',10,11])
df1 = pd.concat([df1,s3],axis = 1)
如果我上面的示例具有误导性,使用文档中的示例可能会有所帮助。
引用:将行附加到 DataFrame。
虽然不是特别有效(因为必须创建一个新对象),但您可以附加一个 通过将 Series 或 dict 传递给附加的单行到 DataFrame,这将返回一个新的 DataFrame,如上所示。结束引用。文档中的示例附加了“S”,它是 DataFrame 中的一行,“S1”是一个系列 并尝试附加“S1”会产生错误。我的问题是为什么会附加“S1 不起作用?问题背后的假设是 DataFrame 必须编码或包含两个轴的轴信息,而 Series 必须只包含一个轴的信息。
df = pd.DataFrame(np.random.randn(8, 4), columns=['A','B','C','D']) s = df.xs(3); #third row of DataFrame s1 = pd.Series([np.random.randn(4)]); #new Series of equal len df= df.append(s, ignore_index=True)
结果
0 1
0 a b
1 5 8
2 6 9
想要的
0 1 2
0 a 5 6
1 b 8 9
【问题讨论】:
标签: python pandas concat series