通过唯一整数将 numpy 数组值作为列添加到 DataFrame
Posted
技术标签:
【中文标题】通过唯一整数将 numpy 数组值作为列添加到 DataFrame【英文标题】:Add numpy array values as columns to DataFrame by unique integer 【发布时间】:2019-04-21 17:49:42 【问题描述】:如果我有一个充满整数的 3xn numpy 数组,我怎么能像这样轻松地将这些整数添加到 DataFrame 中:
输入:
a = np.array(array([[2,10, 8],[2,9,4],[8,2,2],[8,9,10],[2,3,8]])
输出:
首先创建空 DataFrame,列是 numpy 数组中的每个唯一整数。
在这个新 DataFrame 的每一行中,我需要将 numpy 数组中的每一行附加到唯一列。每个新整数都应该变成一列,分别包含整行。
在到达数组中的 [2,3,8]
之前应该看起来像这样:
Column: 2 4 8 9 10
R |[2,9,4]|[8,2,2]|[2,9,4] |[8,2,2]| [2,9,4] |
O [8,2,2] [2,3,8] [2,3,8] [2,3,8]
W: [8,9,10]
由于 numpy 数组中的最后一个条目中有一个 3,而 3 尚未在列列表中,我想为其创建一个新列。
例如,如果数组中[2,3,8]
之后的下一项是[1,89,2]
,那么 DataFrame 现在应该如下所示:
Column: 2 4 8 9 10 3 1 89
R |[2,9,4]|[8,2,2]|[2,9,4] |[8,2,2]| [2,9,4] | [1,89,2] | | |
O [8,2,2] [2,3,8] [2,3,8] [2,3,8]
W: [8,9,10] [1,89,2]
[1,89,2] [8,9,10]
1 和 89 现在被创建为等待 numpy 数组中的下一项的行。
然后第 1、89 和 2 列将包含下一项,依此类推。希望这更清楚。
从技术上讲,我并不关心数据是如何存储的,起初我假设是一个字典,但当我现在看它时,DataFrame 更有意义。如果列表、字典或其他我不知道的功能有更好的方法,请告诉我现在是否有意义。
第二次编辑:
抱歉给大家带来了困惑。
【问题讨论】:
您想要的输出甚至不是有效的 Python... 这只是一个例子。我缺少括号和 5: 无效,抱歉。有没有办法把它作为一个有效的字典呢?逻辑可行吗? @JeffreyEly,请编辑以使预期的输出有意义。 即使在这个例子中,你也会发现自己有重复的键,这些键在 python 字典中是不支持的。还是您的想法是避免使用已添加的键? 用更多示例编辑了原始问题。关键是要有一个标签,并将包含接下来 3 个整数的每一新行附加到现有标签中,如果不存在,则将其添加为新键。那可能吗?当我手动执行它时它可以工作,但我无法为整个 numpy 数组找到一种方法。 【参考方案1】:dict1='2':[[2,9,4],[8,2,2]],'4': [[8,2, 2],[8,9,10]],'8':[[2,9,4],[1,89,2]],'9':[[8,2,2],[2,3,8]],'10': [[2,9,4],[2,3,8]],'3': [[1,89,2],[2,3,8]]
df3=pd.DataFrame(dict1)
我想这会对你有所帮助
【讨论】:
您能否解释一下为什么您认为这会有所帮助? 谢谢,但我需要一个实际函数以这种方式将新数据添加到 DataFrame 或字典中,因为“2”和“4”等值来自实际数组。当我添加新数据时,每个值都应该有自己的标签。虽然我很感激你付出的努力。谢谢。以上是关于通过唯一整数将 numpy 数组值作为列添加到 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章