gpt4 book ai didi

python - Panda 的 DataFrame 双转置将数字类型更改为对象

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:01 25 4
gpt4 key购买 nike

我正在从 excel 中的 2 个不同位置读取数据框的标题和数据(两者都正确对齐但不相邻)。标题可能包含许多空白,因此我需要丢弃这些标题和数据中的相应列。所以我的最后一帧有非空 header 和与这些 header 对应的数据。下面使用转置的逻辑有效,但我在双重转置时丢失了数据类型 - 请参见下面的具体示例 -问题1)关于如何在不换位的情况下实现它的任何建议?2)这是转置的工作方式吗?它不应该在第二次转置时再次推断数据类型吗?

  In [25]:

hd=pd.DataFrame({0:['num'],
1:np.nan,
2:['ltr']})
hd
Out[25]:
0 1 2
0 num NaN ltr
In [26]:

data=pd.DataFrame({0:np.arange(3),
1:['a','b','c'],
2:['d','e','f']})
data
Out[26]:
0 1 2
0 0 a d
1 1 b e
2 2 c f
In [27]:

df=data.T[hd.iloc[0].notnull()].T
df.columns=hd.iloc[0].dropna()
df
Out[27]:
num ltr
0 0 d
1 1 e
2 2 f
In [28]:

df.dtypes
Out[28]:
0
num object
ltr object
dtype: object

In [25]:

hd=pd.DataFrame({0:['num'],
1:np.nan,
2:['ltr']})
hd
Out[25]:
0 1 2
0 num NaN ltr
In [26]:

data=pd.DataFrame({0:np.arange(3),
1:['a','b','c'],
2:['d','e','f']})
data
Out[26]:
0 1 2
0 0 a d
1 1 b e
2 2 c f
In [27]:

df=data.T[hd.iloc[0].notnull()].T
df.columns=hd.iloc[0].dropna()
df
Out[27]:
num ltr
0 0 d
1 1 e
2 2 f
In [28]:

df.dtypes
Out[28]:
0
num object
ltr object
dtype: object

最佳答案

当您开始使用混合数据类型时,转置将数据类型转换为 object。正如预期的那样,数据类型是基于列的。如果您想重新推断它们,可以使用 df.convert_objects()

但是,只需这样做:

In [10]: data.loc[:,hd.iloc[0].notnull()]
Out[10]:
0 2
0 0 d
1 1 e
2 2 f

In [11]: data.loc[:,hd.iloc[0].notnull()].dtypes
Out[11]:
0 int64
2 object
dtype: object

关于python - Panda 的 DataFrame 双转置将数字类型更改为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24682396/

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