在Pandas中用自身的函数替换列?

时间:2016-06-30 09:12:25

标签: python python-2.7 pandas

我目前在熊猫文档中深陷其中。我的问题是:

我有一个简单的数据框

col1  col2
 1     A
 4     B 
 5     X   

我的目标是应用以下内容:

 df['col1'] = df['col1'].apply(square)

其中square是一个干净定义的函数。 但是此操作会抛出错误警告(并产生不正确的结果)

正在尝试在DataFrame的切片副本上设置值。 尝试使用.loc [row_indexer,col_indexer] = value而不是

我无法理解这一点,也无法理解它所指出的文档。我的工作流程是线性的(如果这使得更广泛的解决方案可行)。

Pandas 0.17.1和Python 2.7

所有人都非常感谢。

2 个答案:

答案 0 :(得分:2)

它适合我(熊猫0.18.1):

In [31]: def square(x):
   ....:     return x ** 2
   ....:

In [33]: df
Out[33]:
   col1 col2
0     1    A
1     4    B
2     5    X

In [35]: df.col1 = df.col1.apply(square)

In [36]: df
Out[36]:
   col1 col2
0     1    A
1    16    B
2    25    X

PS它也可能取决于你的功能的实现......

答案 1 :(得分:0)

您可以使用.loc命令消除警告

df.loc[:'col1'] = df['col1'].apply(square)