【发布时间】:2019-02-08 16:45:10
【问题描述】:
我有一个包含一系列字典的 Pandas 数据框,如下:
df.head()
Index params score
0 {'n_neighbors': 1, 'weights': 'uniform'} 0.550
1 {'n_neighbors': 1, 'weights': 'distance'} 0.550
2 {'n_neighbors': 2, 'weights': 'uniform'} 0.575
3 {'n_neighbors': 2, 'weights': 'distance'} 0.550
4 {'n_neighbors': 3, 'weights': 'uniform'} 0.575
目的是为每个实例创建一个以“n_neighbors”和“weights”作为属性的数据框,并删除params 列。我通过创建空的 numpy 数组、循环和追加来实现这一点:
n_neighbors = np.array([])
weights = np.array([])
count = sum(df["score"].value_counts())
for x in range(count):
n_neighbors = np.append(n_neighbors, df["params"][x]["n_neighbors"])
for x in range(count):
weights = np.append(weights, df["params"][x]["weights"])
df["n_neighbors"] = n_neighbors
df["weights"] = weights
df = df.drop(["params"], axis=1)
这感觉肮脏和低效。有没有更优雅的方法来实现这一点?
【问题讨论】:
标签: python pandas numpy dictionary dataframe