我想使用列表推导式使用字典中的值填充 pandas 数据框中设定长度的列。
字典将与数据框现有列中的几乎所有唯一值对应的键映射到某些值。至关重要的是,并非所有唯一值都包含在字典中。在这些情况下,我想放置熊猫原生空值 NaN。这样,我的新列表可以与数据框中的列具有相同的长度。
我尝试在列表理解中使用 if-else 结构,如下所示:
df['col_B'] = [d[key] for key in df['col_A'].values if key in d else NaN]
我希望为字典中没有键值对的行获得一个完全填充的 NaN 列。但是我收到以下错误:
SyntaxError: invalid syntax
我知道错误在于语句的 else 部分,但我不知道如何指定该部分,以便它为缺少的键值对插入 NaN。
下面是重现错误的玩具示例:
# Import pandas library
import pandas as pd
# create a dictionary
d = {1:'a',2:'b', 3:'c'}
# create a list
data = [2,1,3,1,4,2,2,1,4,3]
# Create a data drame with list as only column
df = pd.DataFrame(data, columns = ['number'])
# add new column by populating list with matching dictionary values
df['letter'] = [d[key] for key in df['number'] if key in d else NaN]
你只需要map
在这里
df['letter']=df.number.map(d)
df
number letter
0 2 b
1 1 a
2 3 c
3 1 a
4 4 NaN
5 2 b
6 2 b
7 1 a
8 4 NaN
9 3 c