pandas 如何将函数应用于数据框中的多个列[重复]

a64a0gku  于 2023-04-04  发布在  其他
关注(0)|答案(1)|浏览(106)

此问题在此处已有答案

Pandas DataFrame: apply function to all columns(2个答案)
3天前关闭。
如果我有这个 Dataframe :
| | A|B|C|
| --------------|--------------|--------------|--------------|
| 0|字[|另[|第三[|
| 1|一些[|一个[|四[|
| 第二章|这[|二[|五[|
我想抓取每列中[之前的单词,并用它替换原始值。
我可以这样一列一列地做:

df.A = df.A.apply(lambda x: re.findall("([\w\s]*)\[", x)[0] if '[' in x else x)

但我希望能够同时将其应用于所有列。
我试过:

df[['A', 'B', 'C']] = df[['A', 'B', 'C']].apply(lambda x: re.findall("([\w\s]*)\[", x)[0] if '[' in x else x)

但是什么也没有发生,我确信我错过了一些与系列和 Dataframe 的交互,因为上面的方法将df转换为系列,而我尝试的代码不起作用,将其保持为 Dataframe 。
这就是我期待得到的:
| | A|B|C|
| --------------|--------------|--------------|--------------|
| 0|字|另|三度|
| 1|一些|一个|四|
| 第二章|这个|两个|五|

b4wnujal

b4wnujal1#

您可以使用.str.extract()来实现这一点。

df = df.apply(lambda x: x.str.extract("(\w+)\[", expand=False))
print(df)

下面是@wjandrea建议的另一种方法
x一个一个一个一个x一个一个二个x

相关问题