gpt4 book ai didi

python - Pandas 数据框和 to_numeric : select column by index

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:19 27 4
gpt4 key购买 nike

这个问题可能非常愚蠢,但我伤了脑筋想知道该怎么做

有一个包含 N 列的 pd.dataframe。我需要选择一些列,通过列的索引引用,然后将所有值转换为数字并在我的 dataframe

中重写该列

我已经通过列名引用完成了它(比如 df['a'] = pd.to_numeric(df['a']) 但坚持使用索引(比如 df[ 1] = pd.to_numeric(df[1])

在这种情况下,dataframe 列引用的正确方法是什么? ( python 2.7)

最佳答案

您可以使用 ix用于选择列,然后选择 apply to_numeric :

import pandas as pd

df = pd.DataFrame({1:['1','2','3'],
2:[4,5,6],
3:[7,8,9],
4:['1','3','5'],
5:[5,3,6],
6:['7','4','3']})

print (df)
1 2 3 4 5 6
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3

print (df.dtypes)
1 object
2 int64
3 int64
4 object
5 int64
6 object
dtype: object

print (df.columns)
Int64Index([1, 2, 3, 4, 5, 6], dtype='int64')
cols = [1,4,6]    
df.ix[:, cols] = df.ix[:, cols].apply(pd.to_numeric)

print (df)
1 2 3 4 5 6
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3

print (df.dtypes)
1 int64
2 int64
3 int64
4 int64
5 int64
6 int64
dtype: object

如果列是strings,而不是int(但它看起来像int)添加''到数字在 list cols 中:

import pandas as pd

df = pd.DataFrame({'1':['1','2','3'],
'2':[4,5,6],
'3':[7,8,9],
'4':['1','3','5'],
'5':[5,3,6],
'6':['7','4','3']})

#print (df)

#print (df.dtypes)

print (df.columns)
Index(['1', '2', '3', '4', '5', '6'], dtype='object')

#add `''`
cols = ['1','4','6']
#1. ix: supports mixed integer and label based access
df.ix[:, cols] = df.ix[:, cols].apply(pd.to_numeric)

#2. loc: only label based access
# df.loc[:, cols] = df.loc[:, cols].apply(pd.to_numeric)

#3. iloc: for index based access
# cols = [i for i in range(len(df.columns))]
# df.iloc[:, cols].apply(pd.to_numeric)

print (df)
1 2 3 4 5 6
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3

print (df.dtypes)
1 int64
2 int64
3 int64
4 int64
5 int64
6 int64
dtype: object

关于python - Pandas 数据框和 to_numeric : select column by index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842651/

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