Pandas dataframe和to_numeric:通过索引选择列

13 浏览
0 Comments

Pandas dataframe和to_numeric:通过索引选择列

这个问题可能非常愚蠢,但我费尽心思想要弄清楚该怎么做。

有一个具有N列的pd.dataframe。我需要通过列的索引选择一些列,然后将所有值转换为数字,并将该列重新写入我的dataframe

我已经通过列名引用(例如df['a'] = pd.to_numeric(df['a']))完成了,但在使用索引(例如df[1] = pd.to_numeric(df[1]))时卡住了。

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

0
0 Comments

文章标题:Pandas dataframe和to_numeric:按索引选择列的问题及解决方法

在使用Pandas处理数据时,有时我们需要根据索引选择特定的列。然而,有时候可能会遇到一些问题,比如在使用.ix()函数时可能会出现一些错误。下面我们来看一下出现这个问题的原因以及解决方法。

首先,你可能会想要查看以下这篇文章:

《Is .ix() always better than .loc() and .iloc() since it is faster and supports integer and label access?》

在这篇文章中,作者提到了一些关于.ix()函数的问题和性能方面的讨论。

为了更好地理解这个问题,我们需要先了解一些相关的背景知识。Pandas是一个开源的数据分析和数据处理工具,它提供了一个强大的数据结构和数据操作功能。其中最重要的数据结构之一就是DataFrame,它类似于一个二维表格,可以存储和处理各种类型的数据。

在Pandas中,我们可以使用不同的方法来选择DataFrame中的列。常见的方法有使用标签(.loc())和使用位置(.iloc())。然而,有时候我们可能会遇到一些问题,比如在使用.ix()函数时可能会出现一些错误。这是因为.ix()函数在Pandas 0.20.0版本之后已经被弃用,不再建议使用。官方文档中推荐使用.loc()和.iloc()函数来代替.ix()函数。

除了选择列的方法之外,还有一种常见的问题是如何处理DataFrame中的非数值数据。在处理数据时,我们经常需要将非数值数据转换为数值数据,以便进行计算和分析。这时,我们可以使用Pandas的.to_numeric()函数来将非数值数据转换为数值数据。具体的用法可以参考官方文档。

解决这个问题的方法是:

1.避免使用.ix()函数,而是使用.loc()和.iloc()函数来选择DataFrame中的列。

2.使用Pandas的.to_numeric()函数将非数值数据转换为数值数据。

总之,Pandas是一个非常强大的数据分析和处理工具,但在使用过程中可能会遇到一些问题。通过查阅官方文档和相关资源,我们可以找到解决问题的方法,并更好地利用Pandas来处理数据。希望这篇文章能帮助到你!

0
0 Comments

Pandas是一个用于数据分析和数据操作的Python库。在Pandas中,可以使用DataFrame来表示和处理数据。在这个问题中,出现了一个需要根据索引选择列的需求,并且使用to_numeric函数将选定的列转换为数字类型。

首先,创建一个DataFrame:

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

然后,打印DataFrame的数据类型:

print (df.dtypes)

输出结果:

1    object
2     int64
3     int64
4    object
5     int64
6    object
dtype: object

接下来,打印DataFrame的列索引:

print (df.columns)

输出结果:

Int64Index([1, 2, 3, 4, 5, 6], dtype='int64')

通过以上代码可以看出,DataFrame的第一列、第四列和第六列的数据类型是object,需要将它们转换为数字类型。

可以使用ix函数选择列,并使用apply和to_numeric函数进行转换:

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

再次打印DataFrame的数据类型,可以看到第一列、第四列和第六列的数据类型已经变为int64:

print (df.dtypes)

输出结果:

1    int64
2    int64
3    int64
4    int64
5    int64
6    int64
dtype: object

如果列的名称是字符串,而不是整数(尽管它看起来像整数),需要在选择列的列表中添加'':

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.columns)

输出结果:

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

在选择列的列表中添加'':

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

可以看到,列的名称是字符串的情况下,也可以进行选择和转换。

最后,提到了一个关于如何使用整数引用具有非整数标头的列的问题。可以使用iloc函数,例如,选择第6列可以使用df.iloc[:,5](Python从0开始计数)。

本文介绍了如何使用Pandas的DataFrame和to_numeric函数按索引选择列,并将其转换为数字类型。通过ix函数和apply方法,可以轻松地完成这个任务。同时还提到了当列的名称是字符串时,需要在选择列的列表中添加''。对于使用整数引用具有非整数标头的列的问题,可以使用iloc函数来实现。Pandas提供了强大的工具来处理和操作数据,使得数据分析变得更加高效和方便。

0