当前位置: 首页 > 知识库问答 >
问题:

将熊猫数据帧转换为系列

微生德运
2023-03-14

我对熊猫有些陌生。我有一个熊猫数据框,是一行23列。

我想把它转换成一个系列?我想知道做这件事最像蟒蛇的方式是什么?

我试过pd。系列(我的结果),但它抱怨ValueError:无法将大小为23的序列复制到维度为1的数组轴。它还没有聪明到意识到它仍然是数学术语中的“向量”。

谢谢!

共有3个答案

宫高义
2023-03-14

您可以通过使用以下两种方法之一对数据帧进行切片来检索序列:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iloc.html http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html

import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randn(1,8))

series1=df.iloc[0,:]
type(series1)
pandas.core.series.Series
田昊天
2023-03-14

您可以转置单行数据帧(仍然会产生一个数据帧),然后将结果压缩成一个系列(与到\u frame相反)。

df = pd.DataFrame([list(range(5))], columns=["a{}".format(i) for i in range(5)])

>>> df.squeeze(axis=0)
a0    0
a1    1
a2    2
a3    3
a4    4
Name: 0, dtype: int64

注意:为了适应@IanS提出的问题(即使它不在OP的问题中),测试数据帧的大小。我假设df是一个数据帧,但是边缘情况是一个空的数据帧,一个形状(1,1)的数据帧,以及一个具有多行的数据帧,在这种情况下,使用应该实现其期望的功能。

if df.empty:
    # Empty dataframe, so convert to empty Series.
    result = pd.Series()
elif df.shape == (1, 1)
    # DataFrame with one value, so convert to series with appropriate index.
    result = pd.Series(df.iat[0, 0], index=df.columns)
elif len(df) == 1:
    # Convert to series per OP's question.
    result = df.T.squeeze()
else:
    # Dataframe with multiple rows.  Implement desired behavior.
    pass

这也可以按照@themachinist提供的答案进行简化。

if len(df) > 1:
    # Dataframe with multiple rows.  Implement desired behavior.
    pass
else:
    result = pd.Series() if df.empty else df.iloc[0, :]
牛景同
2023-03-14

它不够聪明,无法意识到它在数学术语中仍然是一个“向量”。

更确切地说,它足够聪明,能够识别维度上的差异。:-)

我认为您可以做的最简单的事情是使用iloc在位置上选择该行,这将为您提供一个系列,其中列作为新索引,值作为值:

>>> df = pd.DataFrame([list(range(5))], columns=["a{}".format(i) for i in range(5)])
>>> df
   a0  a1  a2  a3  a4
0   0   1   2   3   4
>>> df.iloc[0]
a0    0
a1    1
a2    2
a3    3
a4    4
Name: 0, dtype: int64
>>> type(_)
<class 'pandas.core.series.Series'>
 类似资料:
  • 我想读取ArcGIS形状文件的文件,并将其转储到数据帧中。我目前正在使用dbf包。 显然,我已经能够将文件作为一个表加载,但还不能理解如何解析它并将其转换为一个数据帧。怎么做? 这就是我所处的困境: Python将此语句作为输出返回,坦率地说,我不知道该如何处理: 编辑 我的原始示例:

  • 我有一个这样的字典列表: 我想把它变成一个熊猫,如下所示: 注意:列的顺序并不重要。 如何将字典列表转换为如上所示的数据帧?

  • 我使用熊猫数据框来清理和处理数据。但是,我需要将其转换为numpy ndarray,以便使用利用矩阵乘法。我将数据框转换为具有以下内容的列表列表: 这将返回以下结构: 然后我将其转换为如下所示的numpy数组: 然而,以下打印: 给出这个结果: 但是,我需要它们都是numpy数组。如果它不是来自熊猫数据帧,我只是转换一个硬编码列表,那么它们都是Ndarray。当列表是从数据帧生成的时,如何获取该列

  • 在Python3下,我有一个dict,格式如下: 我想使用dict键作为列将其转换为数据帧: 但是,当我尝试以下命令时,我有一个ValueError:

  • 我有一本这样的字典: 我只是想把它转换成一个数据帧,其中的列是,等等,然后将索引设置为当前日期和小时,我将使用该代码作为。 生成的如下所示: 我的第一步是将dict转换为数据帧,就我而言,这段代码应该可以做到这一点: 但是我得到这个错误消息:。 我真的不知道这里有什么问题?任何建议都是很好的,如果有人能够解决将指数调整为bargin的问题,那就更好了。干杯

  • 我有一系列不同元素的值。值计数显示如下。 我想为每个类别创建列,并为每一行标记True/False。 e. g. 我设法从所有项目中获取了这些类别的唯一列表。我还可以通过在此处的解决方案中给出的方法将其制作成单独的列。 但在我的情况下,数据是不完整的/变化的,因此给我一个DF,如下所示 有没有办法使用熊猫或其他python工具将其转换为所需的输出。我现在正在使用pandas.pivot_table