gpt4 book ai didi

python - 带有字符串列名的 DataFrame

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:45 24 4
gpt4 key购买 nike

我有以下问题:我构建了一个带有整数列名和周期索引的 DataFrame。现在,如果我使用以下函数重命名列:

df.rename(columns = lambda x: str(x), inplace=True)

因此,我将列的类型转换为字符串,我观察到以下奇怪的行为:在操作之前,如果我从框架中取出一列,我就会得到一个系列。现在,在某些列上我获得了一个 DataFrame:以前 df.loc[:,1] 给出了一个系列:

现在,df.loc[:,'1'] 给出一个周期索引长度为 0 的 DataFrame 以及 df 的完整原始列。

有人知道我是否做错了什么或者我是否偶然发现了错误?

这是重现该错误的代码片段(?):

A = pd.DataFrame(dict(zip(range(0,9000), [pd.Series([1,2,3], [pd.Period(1), pd.Period(2), pd.Period(3)]) for x in range(0,9000)])))

A[5000]
A.rename(columns = lambda x: str(x), inplace=True)

A['5000'] # This should return a DataFrame with a zero-PeriodIndex and the full columns!

提前非常感谢您并致以最诚挚的问候马克

最佳答案

这是在主控中。看起来正确

In [11]: A = pd.DataFrame(dict(zip(range(0,9000), [pd.Series([1,2,3], [pd.Period(1), pd.Period(2), pd.Period(3)]) for x in range(0,9000)])))

In [12]: A['5000']
Out[12]:
<class 'pandas.core.frame.DataFrame'>
PeriodIndex: 0 entries
Columns: 9000 entries, 0 to 8999
dtypes: int64(9000)

In [13]: A[5000]
Out[13]:
1-01-01 1
1-01-02 2
1-01-03 3
Freq: D, Name: 5000, dtype: int64

In [14]: A.rename(columns = lambda x: str(x), inplace=True)

In [15]: A['5000']
Out[15]:
1-01-01 1
1-01-02 2
1-01-03 3
Freq: D, Name: 5000, dtype: int64

In [16]: A[5000]
KeyError: u'no item named 5000'

关于python - 带有字符串列名的 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17530538/

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