python - 将两个变量解压到 DataFrame 中的两列中

标签 python pandas dataframe

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

下面将把两个结果存储为一列中的元组:

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

以下内容返回 ValueError:解压值太多(预期为 2)

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

但该函数始终返回两个日期,或一个 None。

更新:我尝试返回两个零而不是“无”。仍然遇到同样的错误。

感谢您的帮助。

最佳答案

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

同时,这可以工作,即使不是很优雅......

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

给出这个结果:

     a    b     t1      t2
0  0.0  0.0  first  second
1  0.0  0.0  first  second
2  0.0  0.0  first  second
3  0.0  0.0  first  second
4  0.0  0.0  first  second

这至少可以帮助其他人确定更好的解决方案。

归功于this也在这里发帖。

编辑,找到了更好的修复方法。使用:

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

因此,就您而言,这应该有效:

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

关于python - 将两个变量解压到 DataFrame 中的两列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40179013/

相关文章:

python - 在 Python 中读取和切片二进制数据文件的最快方法

python - 如何重定向 Python 中包含的类的所有方法?

具有 4000 个独特类别的大文件上的 Python 数据透视表

django - 在 django 中安装 pandas

python - 如何正确设置 statsmodels.tsa.ar_model.AR.predict 函数的开始/结束参数

python-3.x - 通过将两列制作成字典将两列合并为一列 - pandas - groupby

python - 如何将第一列的值附加到 Pandas 数据框中的所有其他列

python - 如何将 PySpark RDD 转换为具有未知列的 Dataframe?

python - 如何不在 Dash 中显示默认的 dcc.graph 模板?

python - 在 pandas dataframe 中显示多索引数组 groupby 的结果