使用字典作为参数映射 Pandas 系列,其中值是元组
Posted
技术标签:
【中文标题】使用字典作为参数映射 Pandas 系列,其中值是元组【英文标题】:Map a Pandas series with a dictionary as argument, where the value is a tuple 【发布时间】:2020-04-01 02:29:35 【问题描述】:我正在尝试用字典映射我的 df 列。我的字典包含元组作为值,我只想要元组的第一个元素。我怎样才能做到这一点?
my_dict = 'foo': (1, 0.1)
df['original_column'] = 'foo'
到目前为止我得到了什么:
df['mapped column'] = (1, 0.1)
我想要什么:
df['mapped column'] = 1
有什么想法吗?
【问题讨论】:
【参考方案1】:通过字典理解创建的新字典使用Series.map
来获取元组的第一个值:
df = pd.DataFrame(
'original_column':['foo','bar','baz']
)
my_dict = 'foo': (1, 0.1), 'bar':(2,0.5),'baz':(5,6)
d = k:v[0] for k, v in my_dict.items()
df['mapped column'] = df['original_column'].map(d)
print (df)
original_column mapped column
0 foo 1
1 bar 2
2 baz 5
另一种解决方案是 map original 并通过str[0]
选择元组的第一个值,但如果 DataFrame 较大,性能会更差:
my_dict = 'foo': (1, 0.1), 'bar':(2,0.5),'baz':(5,6)
df['mapped column'] = df['original_column'].map(my_dict).str[0]
print (df)
original_column mapped column
0 foo 1
1 bar 2
2 baz 5
【讨论】:
我明白了,但是当您映射列时,您如何访问第一个元素? df['mapped column] = df['original column'].map(my_dict) 将返回元组,而不是元组的第一个元素以上是关于使用字典作为参数映射 Pandas 系列,其中值是元组的主要内容,如果未能解决你的问题,请参考以下文章
从两个熊猫系列(csv的列作为DataFrame)创建元素字典
Pandas:根据另一列的键在现有列上映射字典值以替换 NaN