我有一个看起来像这样的数据框:
In [169]: dfstacked
Out[169]:
Percent Held Rank
0 14.10 [1]
1 11.13 [2]
2 10.11 [3]
3 8.99 [4]
4 4.79 [5]
5 2.92 [6]
6 2.79 [7]
7 2.63 [8]
8 2.63 [9]
9 1.83 [10]
10 1.81 [11]
11 1.66 [12]
12 1.66 [13]
13 1.64 [14]
14 1.63 [15]
15 1.62 [16]
16 1.26 [17]
17 1.08 [18]
18 1.08 [19]
19 1.07 [20]
dfstacked["Rank"]
的基础数据类型是数组。我使用正则表达式(使用str.findall()
)创建了它,但为了安全起见,请检查以下内容:In [171]: dfstacked["Rank"].dtype
Out[171]: dtype('O')
但是,我想将
dfstacked["Rank"]
转换为具有Series
数据类型的int
,以便可以对dfstacked["Rank"]
中的值执行一些统计测试。我将如何去做呢?到目前为止,我已经尝试使用
Series.map
和Series.astype()
强制使用整数系列。两者都返回ValueErrors。最终,我想要
Percent Held Rank
0 14.10 1
1 11.13 2
2 10.11 3
3 8.99 4
4 4.79 5
5 2.92 6
6 2.79 7
7 2.63 8
8 2.63 9
9 1.83 10
10 1.81 11
11 1.66 12
12 1.66 13
13 1.64 14
14 1.63 15
15 1.62 16
16 1.26 17
17 1.08 18
18 1.08 19
19 1.07 20
最佳答案
我相信以下应该起作用:
In [6]:
df = pd.DataFrame({'Rank':[np.array([0]), np.array([1]), np.array([2])]})
df
Out[6]:
Rank
0 [0]
1 [1]
2 [2]
In [8]:
df['Rank'] = df['Rank'].apply(lambda x: x[0])
df
Out[8]:
Rank
0 0
1 1
2 2
In [9]:
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3 entries, 0 to 2
Data columns (total 1 columns):
Rank 3 non-null int64
dtypes: int64(1)
memory usage: 48.0 bytes
因此,在您的情况下:
dfstacked['Rank'] = dfstacked['Rank'].apply(lambda x: x[0])
关于python - Pandas Python:将数组类型转换为int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29614756/