python-3.x - 将熊猫列拆分为文本和数字
问题描述
我正在尝试根据类型拆分列。我想显示与文本分开的数字。
我试图在没有循环的情况下添加它,但形状不同。因此,我求助于循环播放。然而,它只给了我所有领域的最后一个数字
蟒蛇输入:
newdf = pd.DataFrame()
newdf['name'] = ('leon','eurika','monica','wian')
newdf['surname'] = ('swart38','39swart','11swart','swart10')
a = newdf.shape[0]
newdf['age'] = ""
for i in range (0,a):
newdf['age'] = re.sub(r'\D', "",str(newdf.iloc[i,1]))
print (newdf)
我期待显示年龄列38,39,11,10
。然而,答案都是"10"
最后一个字段。
出去:
name surname age
0 leon swart38 10
1 eurika swart39 10
2 monica 11swart 10
3 wian swart10 10
解决方案
newdf['age']
这是因为您在循环的每次迭代中都分配了新值for
,其中最后一次分配是10
.
您可以通过索引来修复它:
a = newdf.shape[0]
newdf['age'] = ""
for i in range (0,a):
newdf['age'][i] = re.sub(r'\D', "",str(newdf.iloc[i,1]))
# ^^^
或者,使用pandas.Series.str.extract
:
newdf['age'] = newdf['surname'].str.extract('(\d+)')
print(newdf)
输出:
name surname age
0 leon swart38 38
1 eurika 39swart 39
2 monica 11swart 11
3 wian swart10 10
推荐阅读
- web-services - 请求有关自动 glpi 操作的帮助
- python - pandas DF 不在索引 = 键的字典列表中
- reactjs - reactjs 中的一般 400/500 错误处理
- html - 如何使用 css(css 网格)自动填充元素?
- c# - 覆盖字体族
- javascript - 在 JavaScript 中创建具有默认值的动态选择列表
- c# - 如何使用 System.Text.Json 序列化/反序列化非枚举类型的嵌套字典?
- python - 最大化python进程的所有CPU内核的使用率
- angularjs - 如何在 d3.js 中单独制作顶部边缘曲线
- javascript - 如何在react js中的功能组件中的return语句中编写条件