【发布时间】:2017-06-07 13:04:52
【问题描述】:
我想创建一个空的pandas.DataFrame 并使用**kwargs 添加一些列。当我尝试将DataFrame 填充到函数make_new_data_frame 中时,DataFrame 仍然为空(我尝试一一添加列,并且一次使用 kwargs)。但是,如果我从函数返回 kwargs 和 err_df2,则该操作有效(在 jupyter 笔记本中)。我怎样才能让它在函数内部工作,为什么不呢? MWE 下面
from pandas import DataFrame
def make_data_frame():
df = DataFrame({'foo':[1,2,3], 'bar':[1.1,2.2,3.3]})
return df
def make_new_data_frame():
df = make_data_frame()
err_df = DataFrame()
kwargs = {}
for c in df.columns:
if c == 'foo':
continue
err_df.assign(**{c: df['foo'] - df[c]})
kwargs[c] = df['foo'] - df[c]
err_df2 = DataFrame()
err_df2.assign(**kwargs)
return err_df, err_df2, kwargs
err_df, err_df2, kwargs = make_new_data_frame()
print(err_df,'\n')
print(err_df2,'\n')
print(raw_data,'\n')
err_df2.assign(**kwargs)
输出:
Empty DataFrame
Columns: []
Index: []
Empty DataFrame
Columns: []
Index: []
{'bar': 0 -0.1
1 -0.2
2 -0.3
dtype: float64}
Out[26]:
bar
0 -0.1
1 -0.2
2 -0.3
【问题讨论】:
标签: python python-3.x pandas keyword-argument