假设我有一个由14列组成的数据框,所有单元格都是字符串。
这些字符串中的一些是带字母的实际单词。我想将这些列保留为字符串(索引0,3,4和13)。
其中一些字符串是整数,没有小数位。我想将一些列转换为整数(索引1:2,5:7,9:10,12)。
最后,剩下的字符串是带小数位的数字。我想将这些剩余的列转换为浮点数(索引6,8,11)
以下是数据框中的示例:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
0 Joe Blow 1947 29 CLE Q 4 1 0.3 4 5 6.5 2.4 Joe.htm
1 Ed Blow 1972 24 HOU Q 18 1 0.8 4 2 2.5 Ed.htm
2 Jim Blow 1974 23 CHI Q 18 3 2.2 2 0.8 3.83 Jim.htm
3 Al Blow 1995 STL Q 16 2 5 1 3.1 4.5 Frank.htm
4 Tom Blow 1969 23 DET Q 14 1 0.8 3 0 2.4 4.0 Tom.htm
[5 rows x 14 columns]
答案 0 :(得分:2)
您可以将to_numeric
与combine_first
一起使用,但如果NaN
s,则int
列会因为每个设计而转换为float
:
df = df.apply(pd.to_numeric, errors='coerce').combine_first(df)
print (df)
0 1 2 3 4 5 6 7 8 9 10 11 12 13
0 Joe Blow 1947 29.0 CLE Q 4 1 0.3 4 5.0 6.5 2.40 Joe.htm
1 Ed Blow 1972 24.0 HOU Q 18 1 0.8 4 2.0 2.5 NaN Ed.htm
2 Jim Blow 1974 23.0 CHI Q 18 3 2.2 2 NaN 0.8 3.83 Jim.htm
3 Al Blow 1995 NaN STL Q 16 2 NaN 5 1.0 3.1 4.50 Frank.htm
4 Tom Blow 1969 23.0 DET Q 14 1 0.8 3 0.0 2.4 4.00 Tom.htm
print (df.dtypes)
0 object
1 object
2 int64
3 float64
4 object
5 object
6 int64
7 int64
8 float64
9 int64
10 float64
11 float64
12 float64
13 object
dtype: object