Python 获取熊猫中带有数字的第一个字符串
我有一个大的数据集,它包含一个像这样的数据框架Python 获取熊猫中带有数字的第一个字符串,python,pandas,Python,Pandas,我有一个大的数据集,它包含一个像这样的数据框架 CC| WW| 765432 | yqma HH| C1232| uman na| NN| 7830 | man| nnn NN| CC| C1233 | A1000 NN| C12333 | A10 NN| 12333 | A100 我只需要包含数字的第一个值。有时字符串中有一个数字,有时不在同一位置 如何执行此操作?如果所有值都在一列中,请使用: 感谢@moys提供解决方案: df['first'] = df['col'].str.
CC| WW| 765432 | yqma
HH| C1232| uman
na| NN| 7830 | man| nnn
NN| CC| C1233 | A1000
NN| C12333 | A10
NN| 12333 | A100
我只需要包含数字的第一个值。有时字符串中有一个数字,有时不在同一位置
如何执行此操作?如果所有值都在一列中,请使用: 感谢@moys提供解决方案:
df['first'] = df['col'].str.findall(r'(?:[a-zA-Z]?)[\d]+').str[0]
或通过以下方式更改解决方案:
或解决方案表单@Chris A,谢谢:
df['first'] = df['col'].str.extract(r'(\S*?\d+)')
如果所有值都在一列中,请使用: 感谢@moys提供解决方案:
df['first'] = df['col'].str.findall(r'(?:[a-zA-Z]?)[\d]+').str[0]
或通过以下方式更改解决方案:
或解决方案表单@Chris A,谢谢:
df['first'] = df['col'].str.extract(r'(\S*?\d+)')
假设
|
是列。这可能是一种方法,但可能不是最佳方法。然而,它的优点是初学者容易阅读
import pandas as pd
NUMBERS = set([str(i) for i in range(10)])
df = pd.DataFrame([
['CC', 'WW', '765432' , 'yq5ma'],
['HH', 'C1232', 'uman'],
['na', 'NN', '7830' , 'man', 'nnn']
])
values = []
for i in df.index:
for value in df.iloc[i]:
if value and True in [c in value for c in NUMBERS]:
values.append(value)
break
print(values) # Outputs ['765432', 'C1232', '7830']
假设
|
是列。这可能是一种方法,但可能不是最佳方法。然而,它的优点是初学者容易阅读
import pandas as pd
NUMBERS = set([str(i) for i in range(10)])
df = pd.DataFrame([
['CC', 'WW', '765432' , 'yq5ma'],
['HH', 'C1232', 'uman'],
['na', 'NN', '7830' , 'man', 'nnn']
])
values = []
for i in df.index:
for value in df.iloc[i]:
if value and True in [c in value for c in NUMBERS]:
values.append(value)
break
print(values) # Outputs ['765432', 'C1232', '7830']
表示列?
表示列?这个正则表达式更好df['A']。str.findall(r'(?:[A-zA-Z]?)[\d]+')。str[0]
或者str.extract(r'(\S*?\d+)
是的。str.extract(r'(\S*?\d+)有效。我注意到我有一些像M-100的绳子。str.extract解决了这个问题,谢谢大家:]这个正则表达式比df['A']更好。str.findall(r'(?:[A-zA-Z]?)[\d]+')。str[0]
或者.str.extract(r'(\S*?\d+)
Yes.str.extract(r'(\S*?\d+)有效。我注意到我有一些像M-100的绳子。str.extract解决了问题谢谢大家:]