有点冗长的标题,但我有一个大的数据框,它有单值或无值的列表
import pandas as pd
data = {'Name': ['BN #1', 'HHC', 'A comp', 'B comp', BN #2', 'HHC', 'A comp', 'B comp'],
'SysNum': ['["1"]', [], [], [], '["2"]', [], [], []]
}
df = pd.DataFrame(data)
result =
Name SysNum
0 BN #1 ['1']
1 HHC []
2 A comp []
3 B comp []
4 BN #2 ['2']
5 HHC []
6 A comp []
7 B comp []
这是较大数据帧的一小部分,其余的4个选项相同,但BN#每次增加1。有没有办法创建一个新列,从列表中提取“1”并将其转换为整数?我试过几种不同的方法,但都没有成功。最后的目标是有一列整数,这样我就可以搜索最大值
因为您的一些数据是一个列表
[]
,而其中一些是一个列表的字符串'[]'
,所以您需要将所有数据转换为字符串,使用literal_eval
将所有数据转换为列表,然后分解-假设每个列表中只有一个int前两个答案很好地描述了解决这个问题的方法
我的解决方案只是在需要时增加一些性能
试验
在我的Macbook Air M1上给出(我希望这个结果与Arm无关,因为
np.where
通常是最快的解决方案):由于您的最终目标是从字符串列表中提取每个数字并将其转换为整数,而最终目标是只包含一列整数,因此您可以按如下方式执行:
这里,我们将列更改为字符串类型,然后使用^{} 删除} 将单个数字从字符串类型转换为整数类型。最后,我们使用带有^{} 的空列表将这些转换后的整数转发到其他位置
"
、'
、[
和]
的所有字符。然后,利用^{结果:
相关问题 更多 >
编程相关推荐