我是Pandas的新手,在遍历数据集中给定列中的值并查找包含特定字符串的单元格时遇到了麻烦。
Address,City
['1234 Apple Drive', 'San Francisco', 'CA'],''
['4678 Bannana Street', 'Austin', 'TX'],''
对于此示例,我想a)仅提取b)包含字符串“ Street”的地址的街道信息,以及c)将其放置在新插入的名为“ Street”的列中。
Address,City,Street
['1234 Apple Drive', 'San Francisco', 'CA'],'',''
['4678 Bannana Street', 'Austin', 'TX'],'','4678 Bannana Street'
我知道如何在数据集中插入新列。到目前为止,我的代码看起来像这样(假设我当前的数据集只有两列,并且来自示例中的条目):
import numpy as np
import pandas as pd
from pandas import DataFrame, read_csv
df = pd.read_csv('dataset.csv', sep = '\t')
df.insert(loc=3, column = 'street', value=str)
我剩下的一切都不漂亮,到目前为止一直没有用。非常感谢执行a,b和c的任何帮助!谢谢。
试试这个:
import re
df = pd.DataFrame([['1234 Apple Drive', 'San Francisco', 'CA'],
['4678 Bannana Street', 'Austin', 'TX']],
columns=['Address', 'City', 'State'])
df['Street'] = df.Address.str.extract(r'([\S]+)\s+Street', flags=re.IGNORECASE)
print df
Address City State Street
0 1234 Apple Drive San Francisco CA NaN
1 4678 Bannana Street Austin TX Bannana
如果您还想添加街道号码,请执行以下操作:
import re
df[['Street Number', 'Street']] = df.Address.str.extract(r'(\S+)\s+(\S+)\s+Street', expand=True, flags=re.IGNORECASE)
print df
Address City State Street Number Street
0 1234 Apple Drive San Francisco CA NaN NaN
1 4678 Bannana Street Austin TX 4678 Bannana
如果未指定该expand
标志,则使用pandas 0.18.1会收到将来的警告。改用它。
df['Street'] = df.Address.str.extract(r'([\S]+)\s+Street', expand=False, flags=re.IGNORECASE)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句