迭代pandas数据帧并将新值插入空列

时间:2016-06-30 16:45:12

标签: python pandas dataframe iteration

我对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的任何帮助都非常感谢!感谢。

2 个答案:

答案 0 :(得分:2)

试试这个:

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

​

注意

使用pandas 0.18.1如果我没有指定expand标志,我会收到警告。请改用它。

df['Street'] = df.Address.str.extract(r'([\S]+)\s+Street', expand=False, flags=re.IGNORECASE)

答案 1 :(得分:1)

<audio id="mytrack" controls autoplay>
  <source src="https://upload.wikimedia.org/wikipedia/commons/6/6e/Micronesia_National_Anthem.ogg" type="audio/ogg">
</audio>
<span id="fullDuration">0:00</span>