【发布时间】:2018-09-12 16:16:48
【问题描述】:
我正在将 python 列表/字典转换为 pandas 数据框:
import numpy as np
import pandas as pd
points = [
{'coords': (100.5, 100), 'class': 1},
{'coords': (300, 300), 'class':2},
{'coords': (50, 200), 'class':4},
{'coords': (550, 400), 'class':10},
{'coords': (550, 300), 'class':1}
]
# pandas data frame
data = np.array([['x', 'y', 'class']])
for point in points:
row = [point['coords'][0], point['coords'][1], point['class']]
data = np.vstack((data, row))
df = pd.DataFrame(data[1:])
df.columns = data[0:1].tolist()
这给出了以下df:
x y class 0 100.5 100.0 1.0 1 300 300 2 2 50 200 4 3 550 400 10 4 550 300 1
但是,如果我现在尝试进行如下计算:
df['mult'] = df['x'] * df['y']
我收到一个错误:
ValueError: 传递的项目数错误 2,位置暗示 1
【问题讨论】:
-
奇怪,从
df中选择列返回DataFrame类型的对象,谁能解释一下为什么会这样?