python - 如何从熊猫字符串列中正确提取数字符号
问题描述
我有一个带有 field_names 和 valid_values (范围)的 data_dict 熊猫数据框。我想将有效值转换为 lower_limit 和 upper_limit。
字段名称 | 有效值 | 下限 | 上限 |
---|---|---|---|
变量1 | 0-9990 | 0 | 9990 |
变量2 | -9990-9999990 | -9990 | 9999990 |
变量 3 | -999999990-999999990 | -999999990 | 999999990 |
变量4 | 0-999999990 | 0 | 999999990 |
下面的代码正确提取了上限,但错过了下限的负号
data_dict.valid_values.str.extractall(r'(\d+)').unstack()
下面的代码正确提取了上限,但错过了下限的负号
下面的代码适用于下限,但将“-”添加到上限
data_dict.valid_values.str.extractall(r'([+-]\d+)').unstack()
请建议如何正确提取下限和上限。谢谢你。
解决方案
如果始终为正,您可以按 last 拆分值-
:Series.str.rsplit
upper_limit
cols = ['lower_limit','upper_limit']
data_dict[cols] = data_dict.valid_values.str.rsplit('-', expand=True, n=1)
print (data_dict)
field_names valid_values lower_limit upper_limit
0 Var1 0-9990 0 9990
1 Var2 -9990-9999990 -9990 9999990
2 Var3 -999999990-999999990 -999999990 999999990
3 Var4 0-999999990 0 999999990
推荐阅读
- flutter - Flutter 使用 CustomPainter 绘制倾斜的椭圆
- java - 如何使用在 xml 文件中定义的高度宽度和源定义 ImageView?
- java - 屏幕截图在 for 循环的下一次迭代中被覆盖,或者可能在第二次迭代中没有截图
- c - 如何使用 C 预处理器找到库的整个路径?
- android - 嵌套的 Fragment Back Press Child 内部的 Parent 导致问题
- amazon-web-services - Fargate 指标数据丢失
- amazon-redshift - 使用 CASE WHEN REDSHIFT 时添加 1 天
- ios - iOS 应用程序将无法在 Xcode 11.6 的 iPhone iOS 13.6 上运行
- twitter - 接收短信面临的问题
- tensorflow - 用于 android 和指令的 tensorflow lite 模型