【发布时间】:2017-06-17 20:13:25
【问题描述】:
df = pd.DataFrame(columns = ['Date','Data'])
# input some random data into df
test_log = pd.DataFrame(columns = ['Date','Data'])
def test_func(date, data):
if data > 2:
data = data * 2
d = {'Date':date, 'data':data}
return d
df.apply(lambda x: test_func(x['Date'],x['Data']), axis=1)
首先,这不会返回一系列字典d。当apply 中使用的函数 (test_func) 返回单个值时,apply 方法会返回一个系列,但是当您从函数“test_func”返回字典时,df.apply 方法会将 df 中的值替换为返回值。
我想在df 的每一行上运行test_func,然后当test_func 返回一些内容时,它会在test_log 后面附加值即
test_log = test_log.append(d, ignore_index=True)
其中d 是test_func 返回的字典
编辑:
执行时返回一个DataFrame:
def test_func(date, data):
if data > 2:
data = data * 2
d = {'Date':date, 'data':data}
return pd.Series(d)
【问题讨论】:
-
这个是,我的实际代码中的函数要复杂得多,这本质上是最简单的过程
-
如果您提供可重现的问题和所需的最终结果,您将获得快速解决方案。否则,我们必须在字里行间阅读并弄清楚您要实现的目标。这不符合双方的最佳时间利益。
标签: python pandas numpy dictionary