python-3.x 根据应用于每行的函数分解Pandas行

y0u0uwnf  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(128)

我有一个 Dataframe df如下:

Col1    Price   Day
A       16      5
B       12      3
D       5       8

我需要对df的每一行应用一个函数:

import pandas as pd, numpy as np
def Fn(Price, Day):
  pr = np.arange(Price/2, Price + Price/2, Price/2)
  da = np.arange(Day/2, Day+ Day/2, Day/2)
  return pd.DataFrame({'Price':pr, 'Day':da)

我需要实现以下目标:

Col1    Price   Day
A       8       2.5
A       16      5
B       6       1.5
B       12      3
D       2.5     4
D       5       8

在现实中,函数Fn具有如下形式:

pr = np.arange(Price/18, Price + Price/18, Price/18)
da = np.arange(Day/18, Day+ Day/18, Day/18)

我不知道如何进行上述工作。

0yycz8jy

0yycz8jy1#

一种可能的解决方案:
1.使用map迭代 Dataframe 的行
1.在每次迭代中应用Fn,获得相应的结果 Dataframe ,并将其放入列表中。
1.最后,将上述列表中的所有 Dataframe 连接成单个 Dataframe 。

(pd.concat(map(
    lambda x: pd.concat(
        [pd.Series(x[1]['Col1'], name='Col1'),
         Fn(x[1]['Price'], x[1]['Day'])], axis=1, ignore_index=True),
    df.iterrows()))
 .ffill()
 .set_axis(df.columns, axis=1))

输出量:

Col1  Price  Day
0    A    8.0  2.5
1    A   16.0  5.0
0    B    6.0  1.5
1    B   12.0  3.0
0    D    2.5  4.0
1    D    5.0  8.0

相关问题