在DataFram中将两个变量解压为两列

2024-09-19 23:39:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为ReturnDateRange的函数,它将返回两个日期。 我试图将此函数应用于dataFrame中名为“zRow”的列,并将结果存储在两个不同的列中。在

下面将以元组的形式将两个结果存储在一列中:

df['t1']= df['zRow'].map(ReturnDateRange)

以下返回值错误:太多的值无法解压缩(应为2)

^{pr2}$

但是函数总是返回两个日期,或者一个None。在

更新:我尝试返回两个0而不是一个。还是有同样的错误。在

谢谢你的帮助。在


Tags: 函数nonemapdataframedf错误形式元组
1条回答
网友
1楼 · 发布于 2024-09-19 23:39:54

“太多值无法解包”错误是因为它解包的是行,而不是列。因此,转置会有所帮助,但我觉得有更好的方法来解决这个问题。在

同时,这工作,如果不是很优雅。。。在

import pandas as pd
import numpy as np

data = pd.DataFrame(np.zeros(shape=(5,2)),columns=["a","b"])

def mapper(x):
    return ('first', 'second')

data['t1'], data['t2'] = data['b'].map(mapper).apply(pd.Series).values.T

print data

给出这个结果:

^{pr2}$

这至少可以帮助其他人找到更好的解决方案。在

这也归功于this贴在这里。在

编辑,找到了更好的解决方法。使用:

^{3}$

所以,在你的情况下,这应该是有效的:

df[['t1', 't2']] = df['zRow'].map(ReturnDateRange).apply(pd.Series)

相关问题 更多 >