gpt4 book ai didi

python - 如何拆分整个 pandas DataFrame 以列出和选择第 n 个元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:06 25 4
gpt4 key购买 nike

我想在 pandas DataFrame 中滑动元素并具有特定元素:

df =pd.DataFrame({'name':
["0;0;*;1;1...1...1;1;*;1;1","0;0;*;1;1...1...1;1;*;1;2"],
'name2':
["0;0;*;1;1...1...1;1;*;1;3","0;0;*;1;1...1...1;1;*;1;4"]})
>>> print(df)
name name2
0 0;0;*;1;1...1...1;1;*;1;1 0;0;*;1;1...1...1;1;*;1;3
1 0;0;*;1;1...1...1;1;*;1;2 0;0;*;1;1...1...1;1;*;1;4

用“.”分割列出效果很好:

>>> print(df.apply(lambda x: x.str.split(".")))
name name2
0 [0;0;*;1;1, , , 1, , , 1;1;*;1;1] [0;0;*;1;1, , , 1, , , 1;1;*;1;3]
1 [0;0;*;1;1, , , 1, , , 1;1;*;1;2] [0;0;*;1;1, , , 1, , , 1;1;*;1;4]

出于某种原因,“...”(实际存在的子字符串)不是很好:

print(df.apply(lambda x: x.str.split("...")))
name name2
0 [, , , , , , , , 1] [, , , , , , , , 3]
1 [, , , , , , , , 2] [, , , , , , , , 4]

有人知道为什么吗?

但主要问题是我不知道如何从列表中获取特定元素。这只会影响特定的行:

>>> print(df.apply(lambda x: x.str.split(".")[0]))
name [0;0;*;1;1, , , 1, , , 1;1;*;1;1]
name2 [0;0;*;1;1, , , 1, , , 1;1;*;1;3]
dtype: object

如果我按列处理 Dataframe,这种方法会起作用:

>>> print(df["name"].apply(lambda x: x.split(".")[-1]))
0 1;1;*;1;1
1 1;1;*;1;2
Name: name, dtype: objec

我认为一次性处理会更高效、更清洁?有什么建议吗?

最佳答案

您可以将 applymap 与使用 str 方法 splitlambda 一起使用。这是一种避免被解释为正则表达式的方法。

df.applymap(lambda x: x.split('...'))

name name2
0 [0;0;*;1;1, 1, 1;1;*;1;1] [0;0;*;1;1, 1, 1;1;*;1;3]
1 [0;0;*;1;1, 1, 1;1;*;1;2] [0;0;*;1;1, 1, 1;1;*;1;4]

并引用拆分的第一个元素

df.applymap(lambda x: x.split('...')[0])

name name2
0 0;0;*;1;1 0;0;*;1;1
1 0;0;*;1;1 0;0;*;1;1

关于python - 如何拆分整个 pandas DataFrame 以列出和选择第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044813/

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