【问题标题】:How to combine multiple series into one array or a column of data frame?如何将多个系列组合成一个数组或一列数据框?
【发布时间】:2020-01-01 00:07:02
【问题描述】:

我想标准化每个组的分数。在我缩放数据后,它返回了一个系列。我无法在我的数据框中创建新列并将结果放入其中。

我得到的结果是这样的:

  • 3M 公司 [[1.0], [1.0], [0.9]]
  • A.O.史密斯公司 [[1.0], [0.85]]
  • AES 公司 [[1.0], [0.5]]

result I got

我想要的结果是这样的:

  • [1.0, 1.0, 0.9, 1.0, 0.85, 1.0, 0.5]

在这种情况下,我可以将其放入数据框中的新列中。谁能帮我?谢谢!!

【问题讨论】:

  • 您应该发布一小部分数据框样本,以供其他人使用。现在,这留下了很多解释,任何解决方案都可能不适用于您的用例。你还尝试过什么?是什么让你得到了目前的结果?
  • 感谢您的建议。我尝试上传图片或表格但失败了。我会再试一次。
  • 看起来你有一个系列,其中每个项目都按公司名称索引,值是大小为 1 的列表列表。正确吗?
  • @brandon 是的。我想这就是我的情况。

标签: python pandas series


【解决方案1】:

您有一系列要展平的列表。这与this question 有关,只是您多了一层嵌套列表。

您必须遍历系列中的每个项目并将它们展平。使用列表理解:

dd = pandas.Series(
    data=[
        [[1.0], [1.0], [0.9]],
        [[1.0], [0.85]],
        [[1.0], [0.5]]
    ],
    index=['3M Company', 'A.O. Smith Corp', 'AES Corp']
)
flattened = [item[0] for row in dd for item in row]

导致

[1.0, 1.0, 0.9, 1.0, 0.85, 1.0, 0.5]

【讨论】:

  • 感谢您的回答。但是我的数据量很大。为了说明,我只列出了一部分。另外,我得到的结果就像array[array[[1.0],[1.0]]]。我只是上传一张图片。我想我还需要修复每个数字之外的“[]”。
【解决方案2】:
Sum_array = []
ThreeM = ['1.0', '1.0', '0.9']
AO =  ['1.0', '0.85']
AES =  ['1.0', '0.5']
for x in range(0, ThreeM.__len__()):
    Sum_array.append(ThreeM[x])

for x in range(0, AO.__len__()):
    Sum_array.append(AO[x])

for x in range(0, AES.__len__()):
    Sum_array.append(AES[x])

print(Sum_array)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2014-06-04
    相关资源
    最近更新 更多