gpt4 book ai didi

python - 使用 Pandas 从数据框的所有项目中删除字符串

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:43 25 4
gpt4 key购买 nike

我有一个像这样的数据框df:

dic = {'A':['pap','cdf\nsdc','ert','dgx','kll\nsrw','sdq'],
'B':[1,4,6,2,5,6],
'C':['123\n12','34','55','321\n88','09','45']}
df = pd.DataFrame(dic)

我的目标是从所有列中删除由 \n 及其前面的任何 if 组成的字符串:abc\ndef ---> def

我能够通过使用以下代码行实现我的目标:

for index,row in df.iterrows():
df['A'][index]=row['A'].split('\n')[-1]
df['C'][index]=row['C'].split('\n')[-1]

不过,我希望有一种更智能、更紧凑的方式来实现这样的结果。你能建议一种比我的更优雅的方式吗(也许是一些 oneliner)?

注意:B列是 float 的!

最佳答案

您可以使用向量化的 str.split在有问题的 cols 上,如果你有一个更复杂的例子,那么你需要根据 dtype 过滤感兴趣的 cols:

In [135]:
df['A'] = df['A'].str.split('\n').str[-1]
df['C'] = df['C'].str.split('\n').str[-1]
df

Out[135]:
A B C
0 pap 1 12
1 sdc 4 34
2 ert 6 55
3 dgx 2 88
4 srw 5 09
5 sdq 6 45

动态方法:

In [142]:
str_cols = df.select_dtypes([np.object]).columns
str_cols

Out[142]:
Index(['A', 'C'], dtype='object')

In [143]:
for col in str_cols:
df[col] = df[col].str.split('\n').str[-1]

df

Out[143]:
A B C
0 pap 1 12
1 sdc 4 34
2 ert 6 55
3 dgx 2 88
4 srw 5 09
5 sdq 6 45

关于python - 使用 Pandas 从数据框的所有项目中删除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41144821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com