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
中使用内置参数所产生的混乱