我有一个 Dataframe :
id
id1
id2
id3
id8
id9
我想添加一个新列new
,其条件行值如下:
如果id
== id1
中的行,则新行为id1 is cat 1
如果id
== id2
中的行,则新行为id2 is cat 2
如果id
== id3
中的行,则新行为id3 is cat 3
否则为idx is cat 0
,其中x是不属于id1
、id2
或id3
的ID
这是我目前为止尝试的方法,我认为解决方案应该是将for循环 Package 在一个函数中,并将该函数与apply
和/或lambda
一起使用。
import pandas as pd
df = pd.DataFrame({
'id': ['id1', 'id2', 'id3', 'id8', 'id9']
})
df
dict = {'id1': '1', 'id2': '2', 'id3': '3'}
for k, val in dict.items():
if k == "id1" or k == "id2" or k == "id3" in df['state']:
print(str(k) + " is cat " + str(val))
else:
print(str(k) + " is cat 0")
预期结果:
id new
id1 id1 is cat 1
id2 id2 is cat 2
id3 id3 is cat 3
id8 id8 is cat 0
id9 id9 is cat 0
2条答案
按热度按时间xsuvu9jc1#
这是一个简单的字典查找。
输出:
xdnvmnnf2#
您可以获取编号并保存在
m
中,然后使用numpy.where
,如果编号为m.isin(['1','2','3'])
,则使用m
的编号,否则使用0
。输出: