我目前正在调试一些遗留代码以使用更新版本的pandas。我在系列中有一些信息,我想构建一个新的Dataframe:
df = pd.DataFrame(old_series, columns=['A']) # create new dataframe from Series
在0.10.0中,这基本上创建了一个新的Dataframe,列名设置为“A”。在10.13.1中,似乎尝试做一些不同的事情,因为它给了我一个空的DataFrame。
可以做:
df = pd.DataFrame(old_series)
#pseudo_code to find name of column and then use
#pd.rename as per http://stackoverflow.com/questions/12201099/python-pandas-rename-a-series-within-a-dataframe
任何人都知道更短的方式。真的不关心系列曾经被称为什么,只是想在标题为“A”的新DataFrame中得到它
不确定我是否滥用旧代码的语法,或者这是否是0.13.1中的错误?
答案 0 :(得分:1)
df = pd.DataFrame(old_series)
df.columns = ["A"]
答案 1 :(得分:1)
这是一个未记录的“功能”,也未经过测试,0.13.0也发生了变化。
它违反了columns
kw在DataFrame
构造函数中的工作方式的一致性,即reindexes
结果集,而不是renames
。
如果需要,请使用to_frame
更改系列的名称。
In [8]: DataFrame(Series([1,2,3],name='foo'),columns=['A'])
Out[8]:
Empty DataFrame
Columns: [A]
Index: []
[0 rows x 1 columns]
In [9]: Series([1,2,3],name='foo').to_frame()
Out[9]:
foo
0 1
1 2
2 3
[3 rows x 1 columns]
In [10]: Series([1,2,3],name='foo').to_frame(name='A')
Out[10]:
A
0 1
1 2
2 3
[3 rows x 1 columns]