Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于现有列值计算新列_Python_Pandas - Fatal编程技术网

Python 基于现有列值计算新列

Python 基于现有列值计算新列,python,pandas,Python,Pandas,请参见以上我的源表: 我有兴趣根据感兴趣地块列表计算新列“组”: 如果“Lot”列中的源表中的批次存在于感兴趣的批次中,则根据条件确定“Group”列的值。如果不正确,“组”列中的值将从“LOT\U虚拟线”单元复制 期望输出: 假设我们有一个名为感兴趣地段的列表,例如作为读取csv(路径)的结果。loc[:,'lots\u of\u interest']。tolist(): 因为这个问题被标记为Pandas,所以我假设我们讨论的是数据帧和序列,而不是简单的列表。您可以使用loc定位符合您标准的

请参见以上我的源表:

我有兴趣根据感兴趣地块列表计算新列“组”:

如果“Lot”列中的源表中的批次存在于感兴趣的批次中,则根据条件确定“Group”列的值。如果不正确,“组”列中的值将从“LOT\U虚拟线”单元复制

期望输出:


假设我们有一个名为
感兴趣地段的
列表
,例如作为
读取csv(路径)的结果。loc[:,'lots\u of\u interest']。tolist()


因为这个问题被标记为Pandas,所以我假设我们讨论的是数据帧和序列,而不是简单的列表。您可以使用
loc
定位符合您标准的行和列(例如
LOT
isin
系列
感兴趣的批次


不要包括图像(无法复制和粘贴),请包括纯文本(可以)。非常感谢你,Stefan。如果感兴趣的部分是从csv文件中读取的数据帧?pd.read\u csv(“C:/Users/fdoktorm/Documents/Databases/SQL Pathfinder/Startup Integration Toolkit/Examples For Development/LotsOfInterest.csv”).loc[:,“LotsOfInterest”]。to\u list()给出错误:(键入(self)。\uu name\uuuuuuuuuuu,name))AttributeError:“Series”对象没有属性“to\u list”抱歉,这是
.tolist()
。谢谢,现在在lambda函数行中出现以下错误:AttributeError:(“'str'对象没有属性'isin',u'出现在索引0上”)修复了LotsOfInterest语句中的if x['SPC\u LOT']。非常感谢你,Stefan。非常感谢你,亚历山大。您能告诉我如何阅读csv文件,该文件包含熊猫系列的一列吗?谢谢,请给我看一下
pd.read\u csv('full\u path\u to\u filename')
的前两个和后两个输出列表,其中full\u path\u to\u filename就是这个。
df['Group'] = df.apply(lambda x: x['LOT'] if x['LOT'].isin(lots_of_interest) else x['LOT_VIRTUAL_LINE'], axis=1)
df = pd.DataFrame({'LOT': ['A1111', 'A2222', 'A3333', 'B1111', 'B2222', 'B3333'], 
                   'LOT_VIRTUAL_LINE': ['AAA'] * 3 + ['BBB'] * 3})
s = pd.Series(['A1111', 'B2222'], name='Lots Of Interest')
# or... df2 = pd.read_csv('file_path/file_name.csv')

# Value of 'GROUP' defaults to 'LOT_VIRTUAL_LINE'.
df['GROUP'] = df.LOT_VIRTUAL_LINE

# But gets overwritten by 'LOT' if it is in the 'Lots of Interest' series.
mask = df.LOT.isin(s)
# or... mask = df.LOT.isin(df2['Lots of Interest'])  # Whatever the column name is.
df.loc[mask, 'GROUP'] = df.loc[mask, 'LOT']

# Confirm results.
>>> df
     LOT LOT_VIRTUAL_LINE  GROUP
0  A1111              AAA  A1111
1  A2222              AAA    AAA
2  A3333              AAA    AAA
3  B1111              BBB    BBB
4  B2222              BBB  B2222
5  B3333              BBB    BBB