【发布时间】:2017-09-30 15:09:05
【问题描述】:
正如标题所说,我一直在尝试使用 for 循环从另一个 df 构建 Pandas DataFrame,并使用构建的最后一个列来计算新列。
到目前为止,我已经尝试过:
df = pd.DataFrame(np.arange(10))
df.columns = [10]
df1 = pd.DataFrame(np.arange(10))
df1.columns = [10]
steps = np.linspace(10,1,10,dtype = int)
这行得通:
for i in steps:
print(i)
df[i-1] = df[i].apply(lambda a: a-1)
但是当我尝试像这样同时构建 df 和 df1 时:
for i in steps:
print(i)
df[i-1] = df[i].apply(lambda a: a-df1[i])
df1[i-1] = df1[i].apply(lambda a: a-1)
它返回很多乱码+行:
ValueError : Wrong number of items passed 10, placement implies 1
在这个例子中,我很清楚我可以先构建 df1,然后再构建 df。但是如果我尝试它会返回相同的错误:
for i in steps:
print(i)
df[i-1] = df[i].apply(lambda a: a-df1[i])
df1[i-1] = df1[i].apply(lambda a: a-df[i])
这才是我真正需要的。
非常感谢任何帮助,
亚历克斯
【问题讨论】:
标签: python pandas lambda python-3.5