python - 将系列映射到 min(list, key=lambda x : abs(series)) function

标签 python pandas numpy dataframe series

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

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))]

系列pd.DataFrame中的一列,我只是尝试在这里简化它。

最佳答案

使用apply方法,然后映射您的系列,例如:

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)

关于python - 将系列映射到 min(list, key=lambda x : abs(series)) function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061889/

相关文章:

python - Matplotlib Mollweide/Hammer 投影 : region of interest only

python - 为什么应用程序会在 sys.exit 命令后显示?

python - Google 应用引擎 suas cookie 未过期

python - 数据框聚合到数据框

Python Pandas Groupby 删除日期时间列

python - 修改包含元组的字典

pandas - UnicodeDecodeError : 'utf-8' codec can't decode byte 0xcc in position 3: invalid continuation byte

python - 随着时间的推移,将多维多索引数据帧与单索引数据帧相乘

python - 用 bool 值附加 numpy 数组

python - 在 Python Pandas 中搜索数据框中的项目并将列转置为行