编码和python相当新。
我的DataFrame目前看起来像这样。
Text Location
.... NY, USA
.... NewYork
.... Austin,Texas
.... Tx
.... California
.... Somehere on Earth
DataFrame包含从Users Bio中提取的推文和位置。
states = ["AL","Alabama", "AK","Alaska", "AS", "American Samoa", "AZ", "Arizona", "AR", "Arkansas", "CA", "California", "CO", "Colarado" "CT", "Connecticut" "DE", "Delaware", "DC", "District Of Columbia", "FM", "Federated States Of Micronesia", "FL", "Florida" "GA", "Georgia", "GU", "Guam" "HI", "Hawaii", "ID", "Idaho", "IL", "Illinois", "IN", "Indiana","IA", "Iowa", "KS", "Kansas", "KY", "Kentucky", "LA", "Louisiana","ME", "Maine", "MH", "Marshall Islands", "MD", "Maryland", "MA", "Massachusetts", "MI", "Michigan", "MN", "Minnesota", "MS", "Mississippi", "MO", "Missouri", "MT", "Montana", "NE", "Nebraska", "NV", "Nevada", "NH", "New Hampshire", "NJ", "New Jersey", "NM", "New Mexico", "NY", "New York", "NC", "North Carolina", "ND", "North Dakota", "MP", "Northern Mariana Islands", "OH", "Ohio", "OK", "Oklahoma", "OR", "Oregon", "PW", "Palau", "PA", "Pennsylvania","PR", "Puerto Rico", "RI", "Rhode Island", "SC", "South Carolina", "SD", "South Dakota", "TN", "Tennessee", "TX", "Texas", "UT", "Utah", "VT", "Vermont", "VI", "Virgin Islands", "VA", "Virginia", "WA", "Washington", "WV", "West Virginia", "WI", "Wisconsin", "WY", "Wyoming"]
现在我试图找出是否有办法将位置字段更改为以下格式。
Text Location
.... NY
.... NewYork
.... Texas
.... Tx
.... California
.... NaN
我尝试替换列表中的值。但它并没有完成这项工作。有人可以帮帮我吗?
答案 0 :(得分:0)
听起来你需要一个带有一些正则表达式的lambda函数。
import re
states_lower = [state.lower() for state in states]
df['NewLocation'] = df['Location'].map(lambda x: ' '.join([loc for loc in re.findall('\\w+',x) if loc.lower() in states]))
states
列表答案 1 :(得分:0)
这是一种方式:
In [230]: df
Out[230]:
Text Location
0 .... NY, USA
1 .... NewYork
2 .... Austin,Texas
3 .... Tx
4 .... California
5 .... Somehere on Earth
In [231]: states = [
...: "AL","Alabama", "AK","Alaska", "AS", "American Samoa", "AZ", "Arizona", "AR", "Arkansas",
...: "CA", "California", "CO", "Colarado", "CT", "Connecticut", "DE", "Delaware", "DC", "District Of Columbia",
...: "FM", "Federated States Of Micronesia", "FL", "Florida", "GA", "Georgia", "GU", "Guam", "HI", "Hawaii",
...: "ID", "Idaho", "IL", "Illinois", "IN", "Indiana","IA", "Iowa", "KS", "Kansas", "KY", "Kentucky",
...: "LA", "Louisiana","ME", "Maine", "MH", "Marshall Islands", "MD", "Maryland", "MA", "Massachusetts",
...: "MI", "Michigan", "MN", "Minnesota", "MS", "Mississippi", "MO", "Missouri", "MT", "Montana",
...: "NE", "Nebraska", "NV", "Nevada", "NH", "New Hampshire", "NJ", "New Jersey", "NM", "New Mexico",
...: "NY", "New York", "NC", "North Carolina", "ND", "North Dakota", "MP", "Northern Mariana Islands",
...: "OH", "Ohio", "OK", "Oklahoma", "OR", "Oregon", "PW", "Palau", "PA", "Pennsylvania","PR", "Puerto Rico",
...: "RI", "Rhode Island", "SC", "South Carolina", "SD", "South Dakota", "TN", "Tennessee", "TX", "Texas",
...: "UT", "Utah", "VT", "Vermont", "VI", "Virgin Islands", "VA", "Virginia", "WA", "Washington",
...: "WV", "West Virginia", "WI", "Wisconsin", "WY", "Wyoming"]
...:
In [232]: pat = [r'.*\b{}\b.*'.format(x.upper()) for x in states]
...: repl = [states[i//2*2] for i,_ in enumerate(states)]
...:
In [233]: df.Location.str.upper().replace(pat, repl, regex=True)
Out[233]:
0 NY
1 NEWYORK
2 TX
3 TX
4 CA
5 SOMEHERE ON EARTH
Name: Location, dtype: object