python - 如何基于Pandas DataFrame中其他列的值创建新列

标签 python python-3.x pandas

我是编程和 Pandas 的新手。因此,请不要严格判断。

在此表中,我需要添加从其他列获取的值的新列。

inp = [{'Date':2003, 'b1':5,'b2':0,'b3':4,'b4':3},{'Date':2003, 'b1':2,'b2':2,'b3':1,'b4':8},{'Date':2004, 'b1':2,'b2':3,'b3':1,'b4':1},{'Date':2004, 'b1':1,'b2':8,'b3':2,'b4':1},{'Date':2005, 'b1':2,'b2':1,'b3':6,'b4':2},{'Date':2006, 'b1':1,'b2':7,'b3':2,'b4':9}]
df = pd.DataFrame(inp)
print (df)

   Date  b1  b2  b3  b4
0  2003   5   0   4   3
1  2003   2   2   1   8
2  2004   2   3   1   1
3  2004   1   8   2   1
4  2005   2   1   6   2
5  2006   1   7   2   9

即,取决于日期。也就是说,如果"Date" == 2003列的值-我需要从b1列获取值,如果列"Date" = 2004的值,那么我需要从b2列获取值,"Date" = 2004-b3列,依此类推。因此,new column的值应为:5,2,3,8,6,9

我有一本对应的短信字典。喜欢:
Corr_dict = {2003:'b1',2004:'b2',2005:'b4',2006:'b7'...}

这只是一个例子。我有一个很大的数据集,所以我想了解其机制。

抱歉,问题的格式设置不正确。
我将非常感谢您的帮助。

预期产量
   Date  b1  b2  b3  b4  vals
0  2003   5   0   4   3   5.0
1  2003   2   2   1   8   2.0
2  2004   2   3   1   1   3.0
3  2004   1   8   2   1   8.0
4  2005   2   1   6   2   6.0
5  2006   1   7   2   9   9.0

最佳答案

我会用df.lookup:

df['Correspond'] = df.lookup(df.index, df['Date'].map(dd))

MCVE:
import pandas as pd

import numpy as np

inp = [{'Date':2003, 'b1':5,'b2':0,'b3':4,'b4':3},{'Date':2003, 'b1':2,'b2':2,'b3':1,'b4':8},{'Date':2004, 'b1':2,'b2':3,'b3':1,'b4':1},{'Date':2004, 'b1':1,'b2':8,'b3':2,'b4':1},{'Date':2005, 'b1':2,'b2':1,'b3':6,'b4':2},{'Date':2006, 'b1':1,'b2':7,'b3':2,'b4':9}]
df = pd.DataFrame(inp)

dd = {2003:'b1', 2004:'b2', 2005:'b3', 2006:'b4'}

df['Correspond'] = df.lookup(df.index, df['Date'].map(dd))
print(df)

输出:
   Date  b1  b2  b3  b4  Correspond
0  2003   5   0   4   3           5
1  2003   2   2   1   8           2
2  2004   2   3   1   1           3
3  2004   1   8   2   1           8
4  2005   2   1   6   2           6
5  2006   1   7   2   9           9

关于python - 如何基于Pandas DataFrame中其他列的值创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61123068/

相关文章:

python - 可以利用类继承来使用 pytest 组织测试吗?

python - 使用 pytest 设置一个简单的 python 应用程序,出现错误 NameError 和 AttributeError

python - 构造一个大于任何字符串的对象

python - unicode_literals 和 type()

python - 如何在 Jupyter Notebook 中的绘图旁边显示数据框

python - 如何在 Python 中将一组字符串拆分为子字符串,使更短的子字符串更有可能?

python - 检查项目是否是字典键的一部分

python - pyinstaller编译的文件有ssl问题,错误: 185090050

python - 将重复的列合并到同一数据框中

python - 使用字符串的出现过滤数据框内容