【发布时间】:2016-05-24 22:33:06
【问题描述】:
如果满足来自另一个数据框的条件,我正在尝试创建一个新的数据框,其中添加了值。如果一列不为空,它将应用一个函数,将前面的 90 行写入新数据帧。但是,我在编写当前代码时遇到了许多错误,因为我对应用函数后返回的值有些困惑。
我编写了一个使用 for 循环的代码,但是它需要很长时间才能执行。我希望只用 numpy 和 pandas 编写新代码。
df_regression = pd.DataFrame()
def func(x):
global df_regression
a = x.name
b = x.name - 89
df_writetoreg = df6_mod[b:a]
df_regression = df_regression.append(df_writetoreg)
return df_writetoreg
df6_mod[pd.notnull(df6_mod['Characters1'])][['Characters1']].apply(lambda x: func(x), axis=1)
****编辑*****
例子:
数据帧 A
Example Value Characters1
A 10 NA
A 20 NA
A 30 1
A 15 NA
A 10 NA
B 10 NA
B 20 NA
B 30 NA
B 15 1
B 10 NA
因此,在这种情况下,应用该函数后,我想创建一个数据框 B,它的所有值都位于 Characters1 列中的“1”值之前,而不是 3 个值,而是 90。
数据帧 B
Example Value Characters1
A 10 NA
A 20 NA
A 30 1
B 20 NA
B 30 NA
B 15 1
【问题讨论】:
-
我不清楚你在问什么。另外,我无法通过查看您的代码来确定您的意思。更好的方法是提供示例数据(更好地提供生成数据帧的代码)并显示所需的输出应该是什么样子。这样,我们就可以通过一个预期的例子来消除对要做什么的模糊描述。
-
很抱歉,再次阅读后,我确实可以看到它令人困惑。所以我目前有数据集 A,并且该数据集的一列包含一个值。我想调用一个通过该列并找到非 NA 值的函数。每次它在该列中检测到一个值时,它都会应用该函数将该行继续该行的最后 80 行切片到一个新的数据帧(例如 Datafame B)。我们的想法是构建一个新的数据帧,其中每个数据帧 A 中的非 NA 值只有 80 行。
-
如果您需要更多信息,请告诉我,我不知道是否可以为您提供确切的数据,但我可以在编辑问题时重建一个示例。