【问题标题】:Problems mapping a series to a min(list, key=lambda x: abs(series)) function将系列映射到 min(list, key=lambda x: abs(series)) 函数的问题
【发布时间】:2016-10-15 17:06:28
【问题描述】:

我想在series 中找到一个数字,并在[1,2,3] 中找到它最接近的数字。然后使用key 将系列值替换为适当的字母。

key = {1: 'A', 2:'B', 3:'C')
series = pd.Series([x*1.2 for x in range(10)])


pd.DataFrame = key[min([1,2,3], key=lambda x: abs(x-series))]

series 是来自pd.DataFrame 的列,我只是在这里尝试对其进行简化。

【问题讨论】:

  • 您能否添加series 的示例案例和预期输出?还有,标题写着:Problems,那你遇到了什么问题?

标签: python pandas numpy dataframe series


【解决方案1】:

使用apply 方法然后map 你的Series 这样有:

key = {1: 'A', 2:'B', 3:'C'}
series = pd.Series([x*1.2 for x in range(10)])

def find(myNumber):
    return min([1,2,3], key=lambda x:abs(x-myNumber))

series.apply(find).map(key)
Out[50]: 
0    A
1    A
2    B
3    C
4    C
5    C
6    C
7    C
8    C
9    C
dtype: object

如果你用整个数据框替换系列,它也应该工作,例如:

df.apply(find).map(key)

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多