【问题标题】:Map a Pandas series with a dictionary as argument, where the value is a tuple使用字典作为参数映射 Pandas 系列,其中值是元组
【发布时间】: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

有什么想法吗?

【问题讨论】:

    标签: python pandas dictionary tuples


    【解决方案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) 将返回元组,而不是元组的第一个元素
    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 2020-09-01
    • 2021-04-18
    • 2016-09-02
    • 2019-02-23
    • 2022-12-11
    相关资源
    最近更新 更多