python - 如何从数据框中的列中输出一系列数字?
问题描述
我想创建一个循环,它将在数据框中提取一个数字或范围,并在找到单词后停止分析字符串。
例如:
df['size']=['sz 10-13 of jordan 12', 'size 10 adidas',
'size 11 nike air forece 1', 'sz 6-7 jordan 6sz', ‘brand new Sz 11 jordan 5’]
我需要一个类似的功能:
def assignSize(row):
sizeList =[]
for word in sizeList:
if word == 'sz' or word == 'size':
#i do not know what to place here
但我希望我的输出是:
df['size'] =['10-13','10','11','6-7']
基本上我希望脚本在找到第一个数字或第一个数字范围后停止读取字符串。所以在初始大小或 sz 之后还有另一个“sz”,它不应该读取它。
解决方案
为什么不只是这个?:
df['size'] = df['size'].apply(lambda x: x.split()[1])
print(df['size'])
输出:
0 10-13
1 10
2 11
3 6-7
Name: size, dtype: object
编辑:
尝试这个:
import re
df['size']=['sz 10-13 of jordan 12', 'size 10 adidas',
'brand new Sz 13 jordan 5', 'sz 6-7 jordan 6sz']
df['size'] = df['size'].apply(lambda x: '-'.join(re.findall(r'\d+', ' '.join(x.split()[:-1]))))
print(df['size'])
输出:
0 10-13
1 10
2 13
3 6-7
Name: size, dtype: object
推荐阅读
- python - 如何从 Cassandra 并行化 pyspark 中的表加载
- java - 这段代码中如何使用super关键字调用父类的构造函数?
- rx-swift - “共享副作用”和“共享资源”的区别
- ios - 适用于 iOS 的 Google Maps SDK 返回模糊地图
- javascript - 当延迟为 0 秒时,在 for 循环中设置时间输出
- mysql - MySQL:基于内连接的两列更新
- javascript - 请求的纹理大小 [0x0] 无效。我在浏览器中加载图像时出错
- android - 如何在调用 writeCharacteristic() 时向 Android 手机发送错误?
- r - 在循环中分配变量名
- matlab - 在 Matlab 中取消堆叠多个列