【发布时间】:2014-09-01 04:10:27
【问题描述】:
我正在从 excel 中的 2 个不同位置读取数据帧的标题和数据(两者都正确对齐但不相邻)。标题可能包含许多空白,因此我需要丢弃这些标题和数据中的相应列。所以我的最后一帧有非空标题和对应于这些标题的数据。下面使用转置的逻辑有效,但我在双重转置时丢失了数据类型 - 请参见下面的具体示例 - 题 1)关于如何在不换位的情况下实现它的任何建议? 2)这就是转座应该如何工作的吗?它是否应该在第二次转置时再次推断 dtypes?
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
【问题讨论】:
-
这和预期的一样,数据类型是基于列的。如果你想重新推断它们,你可以使用
df.convert_objects()。