【发布时间】:2021-01-24 16:35:06
【问题描述】:
我有两个这样的数据框:第一个有 1 列 720 行(数据框 A),第二个有 10 列和 720 行(数据框 B)。数据框只包含数值。
我试图以这种方式比较它们:我想遍历数据框 B 的每一列,并将该列的每个单元格(行)与数据框 A 中的相应行进行比较。 (例如:对于数据帧 B 的第一列,我将第一行与数据帧 A 的第一行进行比较,然后将 B 的第二行与 A 的第二行进行比较,以此类推)
基本上我想将数据框 B 的每一列与数据框 A 中的单列逐行进行比较。
如果数据框 B 中的值小于或等于数据框 A 中的值,我想将 +1 添加到另一个数据框(或列表,具体取决于其容易程度)。最后,我想删除数据框 B 中没有至少一个单元格来满足条件的任何列(基本上如果添加到列表或新数据框的值为 0)。
我尝试过这样的事情(为单行编写,我正在考虑使用它创建一个 for 循环),但它似乎没有达到我想要的效果:
DfA_i = pd.DataFrame(DA.iloc[i])
DfB_j = pd.DataFrame(DB.iloc[j])
B = DfB_j.values
DfC['Criteria'] = DfA_i.apply(lambda x: len(np.where(x.values <= B)), axis=1)
dv = dt_dens.values
if dv[1] < 1:
DF = DA.drop(i)
我希望我的问题足够清楚,如有任何错误,我深表歉意。感谢您的帮助。
【问题讨论】:
-
引用中的例子措辞不正确。如果您可以为社区提供可重现的数据框,这将有很大帮助。
标签: python pandas dataframe for-loop if-statement