Python 删除列表数据框列的第二个最后一个元素
我有这个问题,我希望能够删除列表的最后一个元素,但保留所有其他元素 我有一个初始数据帧:Python 删除列表数据框列的第二个最后一个元素,python,python-3.x,pandas,list,dataframe,Python,Python 3.x,Pandas,List,Dataframe,我有这个问题,我希望能够删除列表的最后一个元素,但保留所有其他元素 我有一个初始数据帧: Traceroute_1 ------------------------------------------------------------------- ['10.0.11.10', '10.0.1.2', '10.0.12.10', '10.0.12.100'] ['10.0.11.10', '10.0.1.6', '10.0.1.18', '10.0.13.10', '1
Traceroute_1
-------------------------------------------------------------------
['10.0.11.10', '10.0.1.2', '10.0.12.10', '10.0.12.100']
['10.0.11.10', '10.0.1.6', '10.0.1.18', '10.0.13.10', '10.0.13.100']
['10.0.11.10', '10.0.1.6', '10.0.1.18', '10.0.1.26', '10.0.14.10', '10.0.14.100']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.4.6', '10.0.2.5', '10.0.22.10', '10.0.22.100']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.2.9', '10.0.23.10', '10.0.23.100']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.4.6', '10.0.2.18', '10.0.24.10', '10.0.24.100']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.2.23', '10.0.25.10', '10.0.25.100']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.7.6', '10.0.3.5', '10.0.33.10', '10.0.33.100']
我想在另一个名为“Traceroute_2”的专栏中得到的结果是:
如您所见,每个列表的所有倒数第二个元素都已删除,但所有其他值仍保留
我试过这个:
dfDef1["Traceroute_2"] = [el[:-2] for el in dfDef1["Traceroute_1"]]
但结果是:
Traceroute_2
----------------------
['10.0.11.10', '10.0.1.2']
['10.0.11.10', '10.0.1.6', '10.0.1.18']
['10.0.11.10', '10.0.1.6', '10.0.1.18', '10.0.1.26']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.4.6']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.2.9']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.4.6', '10.0.2.18']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.2.23']
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.7.6', '10.0.3.5']
这是我的代码:
import pandas as pd
dfDef1 = pd.DataFrame({'Traceroute_1':
[
['10.0.11.10', '10.0.1.2', '10.0.12.10', '10.0.12.100'],
['10.0.11.10', '10.0.1.6', '10.0.1.18', '10.0.13.10', '10.0.13.100'],
['10.0.11.10', '10.0.1.6', '10.0.1.18', '10.0.1.26', '10.0.14.10', '10.0.14.100'],
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.4.6', '10.0.2.5', '10.0.22.10', '10.0.22.100'],
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.2.9', '10.0.23.10', '10.0.23.100'],
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.4.6', '10.0.2.18', '10.0.24.10', '10.0.24.100'],
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.2.23', '10.0.25.10', '10.0.25.100'],
['10.0.11.10', '10.0.1.6', '10.0.1.14', '10.0.6.6', '10.0.7.6', '10.0.3.5', '10.0.33.10', '10.0.33.100']
]
})
dfDef1["Traceroute_2"] = [el[:-2] for el in dfDef1["Traceroute_1"]]
如何做到这一点?尝试使用
series.str
切片:
dfDef1['Traceroute_2_new'] = (dfDef1['Traceroute_1'].str[:-2]
+ dfDef1['Traceroute_1'].str[-1:])
尝试使用
series.str
切片:
dfDef1['Traceroute_2_new'] = (dfDef1['Traceroute_1'].str[:-2]
+ dfDef1['Traceroute_1'].str[-1:])
在脚本中,您将选择所有元素,直到从最后一个元素算起的第三个元素 也许通过对脚本的这一小改动,您可以:
dfDef1["Traceroute_2"] = [el[:-2].extend(el[-1]) for el in dfDef1["Traceroute_1"]]
在脚本中,您将选择所有元素,直到从最后一个元素算起的第三个元素 也许通过对脚本的这一小改动,您可以:
dfDef1["Traceroute_2"] = [el[:-2].extend(el[-1]) for el in dfDef1["Traceroute_1"]]
el[:-2]将从开始到最后一个元素(排除)的所有内容都保留下来 尝试:
el[:-2]将从开始到最后一个元素(排除)的所有内容都保留下来 尝试:
有趣的是,
series.str
切片可用于对字符串列表进行切片,而不仅仅是对字符串进行切片。我找不到任何说明这种用法的文件。你能告诉我关于这种用法的在线文档或指南吗?谢谢@SeaBean的文档说这只是一个向量化的方法,你将如何正常使用str方法,所以“ABC”[-2://code>返回BC
和['a','B','C'][-2://code>返回['B','C']
,想象一下这是怎么回事,但作为一个系列非常聪明的用法!谢谢你的解释!:-)有趣的是,series.str
切片可用于对字符串列表进行切片,而不仅仅是对字符串进行切片。我找不到任何说明这种用法的文件。你能告诉我关于这种用法的在线文档或指南吗?谢谢@SeaBean的文档说这只是一个向量化的方法,你将如何正常使用str方法,所以“ABC”[-2://code>返回BC
和['a','B','C'][-2://code>返回['B','C']
,想象一下这是怎么回事,但作为一个系列非常聪明的用法!谢谢你的解释!:-)