使pandas列中的数字小于360

iq3niunx  于 6个月前  发布在  其他
关注(0)|答案(2)|浏览(63)

这是我的职责

def price_to_ephe(data):
    converted = []
    for i in data:
        while i >= 360:
            i = i - 360
        converted.append (i)
    return converted

字符串
它使每一个数字小于360。我想把它应用到列中。

2009-01-01, 886.0
2009-01-02, 884.2
2009-01-03, 882.1
2009-01-04, 882.6
2009-01-05, 883.4
2009-01-06, 889.1
2009-01-07, 887.6
2009-01-08, 882.5
2009-01-09, 879.7
2009-01-10, 878.3
2009-01-11, 876.6
2009-01-12, 875.2


预期产出:

2009-01-01, 166.0
2009-01-02, 164.2
..............


.等等。数字可以大也可以小:10000和20。
请帮我做最有效的方式。DataFrame是非常大的。我需要Pandas的所有速度!

zmeyuzjn

zmeyuzjn1#

你想要的是得到你的值的modulo,这是用mod(或%)实现的:

df['modulo'] = df['value'].mod(360)

字符串
或者:

df['modulo'] = df['value'] % 360


输出量:

date  value  modulo
0   2009-01-01  886.0   166.0
1   2009-01-02  884.2   164.2
2   2009-01-03  882.1   162.1
3   2009-01-04  882.6   162.6
4   2009-01-05  883.4   163.4
5   2009-01-06  889.1   169.1
6   2009-01-07  887.6   167.6
7   2009-01-08  882.5   162.5
8   2009-01-09  879.7   159.7
9   2009-01-10  878.3   158.3
10  2009-01-11  876.6   156.6
11  2009-01-12  875.2   155.2

euoag5mw

euoag5mw2#

可以使用pandas.DataFrame.apply
此方法将一个函数沿着轴应用于pandas框架。
如果你想在没有自己的“price_to_ephe”函数的情况下实现它,你需要使用modulo to reduce 360列。
df[“column_name”].mod(360)

相关问题