对于n个变量的给定范围。我以n = 3为例。
A : [1,3]
B: [5,10,12]
C: [100,113]
注意,上述范围内的值也可以是浮点型的。
我们如何创建一个数据框,其中每一列代表输入变量的唯一组合?
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
a 1 1 1 3 3 3 1 1 1 3 3 3
b 5 10 12 5 10 12 5 10 12 5 10 12
c 100 100 100 100 100 100 113 113 113 113 113 113
使用Itertools.product,我可以创建一个列表的所有组合,然后您可以将每个组合写入DataFrame
import itertools
A = [1, 3]
B = [5, 10, 12]
C = [100, 113]
a = [A, B, C]
print(list(itertools.product(*a)))
# Outputs [(1, 5, 100), (1, 5, 113), (1, 10, 100), (1, 10, 113), (1, 12, 100), (1, 12, 113), (3, 5, 100), (3, 5, 113), (3, 10, 100), (3, 10, 113), (3, 12, 100), (3, 12, 113)]
idx = ['c{}'.format(i) for i in range(1, len(data)+1)]
data = list(itertools.product(*a))
df = pd.DataFrame(data, index=idx, columns=list('abc')).T
df
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
a 1 1 1 1 1 1 3 3 3 3 3 3
b 5 5 10 10 12 12 5 5 10 10 12 12
c 100 113 100 113 100 113 100 113 100 113 100 113
我试图基于单个条件,根据多列中的值过滤数据帧,但保留我根本不想应用过滤器的其他列。 我回顾了这些答案,第三个是最接近的,但仍然没有运气: 如何按多列筛选数据帧 筛选多个列 Python熊猫-如何按一个值筛选多个列 设置: 电流输出: 期望输出: 我试过: 以及许多其他变体(,,
我有下面的数据框- 我需要一个全新的数据帧,,有3列:1.0、2.0(结合2.0和4.0)和3.0(结合3.0和5.0)。 结果将是- 您可以预期合并列中不会有重叠的值;如果一行中的一列具有有效值,那么其他列将具有NaN值。 我试过了- 而且它并没有按预期的那样工作。有没有简单有效的方法来做到这一点?
我有一个由6列组成的数据框。生成矩阵的最快方法是什么,该矩阵具有以下功能: 步骤1)col1*col1a, col2*col2a, col3*col3a, col4*col4a 步骤2)col_new=(col1*col1a)-col2*col2a)/(col1a-col2a) 使用for循环是选择之一——但是有什么方法可以更快地实现这一点。 我需要有1x3,1x4,1x5,2x3,2x4等等的列
我有一个如下所示的数据帧: 如何获取除之外的所有列?
问题内容: 要按单列过滤数据帧(df),如果我们考虑男性和女性的数据,则可以: 问题1-但是,如果数据跨越多年并且我只想看2014年的男性,该怎么办? 用其他语言,我可能会做类似的事情: (除了我要执行此操作,并在新的数据框对象中获取原始数据框的子集) 问题2。如何循环执行此操作,并为每个唯一的年份和性别集创建一个数据框对象(例如,2013-男,2013-女,2014-男和2014-女的df 问题
我记录一个设备,每15分钟读取3个值(,,)。它们可以重复。 我需要找出每小时在该间隔内读取的12个值中最大的3个值是什么。我对它们何时发生不感兴趣,只对它们的值感兴趣。 目前,我的算法还远远不够高效和快速: 在每组中循环: 我想去掉这个循环,使用原生的pandas/numpy方法。可能吗? 编辑:在这篇文章的末尾提出了一个可行的解决方案 以下是代码: 回报: 解决方案 我在代码中实现这个解决方案