我得到了一个如下的数据帧(称之为df1):
id date value
A1 day1 0.1
A1 day2 0.2
A1 day3 -0.1
A2 day1 0.3
A3 day2 0.2
A3 day4 -0.5
我需要将值转换为矩阵进行计算,因此我认为我需要首先将数据帧转换为此形式(称为df2)(然后转换为numpy数组):
day1 day2 day3 day4 day5
A1 0.1 0.2 -0.1 0.0 0.0
A2 0.3 0.0 0.0 0.0 0.0
A3 0.0 0.2 0.0 -0.5 0.0
如果id在某一天没有值,只需将该天的值设置为0(可能所有id都没有完整的日期值)。
我想的是先生成一个空的DataFrame(称其为df3),然后在其中填充df1的数据:
day1 day2 day3 day4 day5
A1 0.0 0.0 0.0 0.0 0.0
A2 0.0 0.0 0.0 0.0 0.0
A3 0.0 0.0 0.0 0.0 0.0
但我不知道迭代df1的值以匹配df3中的单元格的正确方法(人们说迭代数据帧是个坏主意?),还是有更好的方法(如枢轴或合并)?
这应该行得通。
# pivot and reindex to add the missing days
df.pivot(*df).reindex(['day1', 'day2', 'day3', 'day4', 'day5'], axis=1).fillna(0).values
# array([[ 0.1, 0.2, -0.1, 0. , 0. ],
# [ 0.3, 0. , 0. , 0. , 0. ],
# [ 0. , 0.2, 0. , -0.5, 0. ]])
问题内容: 我在mysql表中的数据具有长/高格式(如下所述),并希望将其转换为宽格式。我可以只使用sql吗? 用一个例子最容易解释。假设您具有有关M个国家/地区,N个键(例如,键可以是收入,政治领导人,地区,大洲等)的(国家/地区,键,值)信息。 SQL中是否可以使用宽格式的数据来创建新表? //这将为我获取所有键。 1)然后如何使用这些关键元素创建表? 2)然后如何填写表格值? 我很确定我可以
我试图将pandas数据帧从宽到长,但我找不到一个好方法。有没有建议通过熊猫来实现这一点? 预期结果:
我有以下类别的< code>Dataframe列: 如何创建新列并将转换为:
问题内容: 我想使用与列长有关的条件来过滤,这个问题可能很容易,但是我在SO中没有找到任何相关问题。 更具体的,我有一个只有一个,其中,我想过滤使用长度filterer,我拍下面的一个片段。 我阅读了Column的Documentation,但是没有找到任何有用的属性。感谢您的帮助! 问题答案: 在Spark> = 1.5中,您可以使用功能: 在Spark <1.5中,UDF应该可以解决问题: 如
我从一个列中提取数据的子集,基于满足另一个列中的条件。 我可以得到正确的值,但它在pandas.core.frame.DataFrame中。如何将其转换为列表?
问题内容: 我有一个带有4列的pandas DataFrame,我想创建一个 只有 三个列的 新 DataFrame 。这个问题类似于:从数据框中提取特定的列,但对于不是R的熊猫来说。以下代码不起作用,会引发错误,并且肯定不是熊猫的方式。 熊猫人做这件事的方法是什么? 问题答案: 有一种方法可以做到,它实际上看起来类似于R 在这里,您只是从原始数据框中选择所需的列,并为这些列创建变量。如果您想完全