【发布时间】:2017-08-01 21:52:24
【问题描述】:
我有一个数据框,其中包含不同名称的一列。我从这些名称中提取特征并将它们存储到字典中。然后我想为每个特征创建一个列并为每个名称存储值。我正在努力让我的循环正确。
我的代码:
import pandas as pd
data = pd.DataFrame(['Mike', 'Ester', 'Sarah'])
data.columns = ['name']
def get_features(name):
features = {}
features["firstletter"] = name[0].lower()
features["lastletter"] = name[-1].lower()
return features
for name in data['name']:
features = get_features(name)
print features
for f,v in features.items():
data[f] = v
data.head()
我明白了:
name lastletter firstletter
0 Mike h s
1 Ester h s
2 Sarah h s
我需要:
name lastletter firstletter
0 Mike e m
1 Ester r e
2 Sarah h s
我理解为什么所有名字都从姓氏中获取值,但我不知道如何解决它。我可能可以先为所有功能创建新标题,然后更新我的数据框,但我希望有更聪明的方法。感谢您的帮助!
编辑:我的特征函数比第一个/最后一个字母要复杂得多。它包含大约 20 种不同的功能,所以我真的需要构建一个字典...
def get_features(name):
features = {}
features["firstletter"] = name[0].lower()
features["lastletter"] = name[-1].lower()
features["hythen"] = ("-" in name.lower())
features["suffix"] = name[-2:].lower()
features["prefix"] = name[0:2].lower()
features["length"] = len(name)
for letter in 'abcdefghijklmnopqrstuvwxyz':
features["count(%s)" % letter] = name.lower().count(letter)
features["has(%s)" % letter] = (letter in name.lower())
return features
【问题讨论】:
-
答案已更新。
标签: python python-2.7 pandas dataframe