Python 为什么熊猫没有一个选择来使用。在适当的地方应用?

Python 为什么熊猫没有一个选择来使用。在适当的地方应用?,python,pandas,dataframe,Python,Pandas,Dataframe,我喜欢认为每一个设计决策都是有原因的。许多函数(例如,df.drop,df.renamedf.replace)都带有一个参数,inplace。如果将其设置为True,则pandas不会返回新的数据帧,而是就地修改数据帧。这里没有什么意外;) 然而,我经常发现自己在使用df。将与lambda表达式结合使用,对列执行更复杂的操作。考虑下面的例子: 假设我有需要为情绪分析预处理的文本数据。我将使用: def remove_punctuation(text): no_punct = "".joi

我喜欢认为每一个设计决策都是有原因的。许多函数(例如,
df.drop
df.rename
df.replace
)都带有一个参数,
inplace
。如果将其设置为
True
,则pandas不会返回新的数据帧,而是就地修改数据帧。这里没有什么意外;)

然而,我经常发现自己在使用
df。将
与lambda表达式结合使用,对列执行更复杂的操作。考虑下面的例子:

假设我有需要为情绪分析预处理的文本数据。我将使用:

def remove_punctuation(text):
    no_punct = "".join([c for c in text if c not in string.punctuation])
    return no_punct
然后将我的专栏改编如下:

df['text'] = df['text'].apply(lambda x: remove_punctuation(x))

我最近注意到.apply没有参数
inplace=True
。既然此函数主要用于更新数据帧,为什么这样的参数不可用?这背后的基本原理是什么?

pandas.DataFrame.apply
pandas.Series.apply
都从
DataFrame
Series
返回
序列。在您的示例中,您将其应用于
系列
,而
inplace
在这里可能有意义。然而,也有其他应用程序无法实现

例如,
df
为:

   col1  col2
0     1     3
1     2     4
做:

s = df.apply(lambda x: x.col1 + x.col2, axis=1)
将返回类型和形状与原始数据帧不同的
系列
。 在这种情况下,
inplace
参数没有多大意义

我认为
pandas
devs希望在
pandas.DataFrame.apply
pandas.Series.apply
之间实现一致性,从而避免在
pandas.Series.apply
中使用
内置参数所产生的混乱