我对熊猫有些陌生。我有一个熊猫数据框,是一行23列。
我想把它转换成一个系列?我想知道做这件事最像蟒蛇的方式是什么?
我试过pd。系列(我的结果),但它抱怨ValueError:无法将大小为23的序列复制到维度为1的数组轴
。它还没有聪明到意识到它仍然是数学术语中的“向量”。
谢谢!
您可以通过使用以下两种方法之一对数据帧进行切片来检索序列:
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
您可以转置单行数据帧(仍然会产生一个数据帧),然后将结果压缩成一个系列(与到\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, :]
它不够聪明,无法意识到它在数学术语中仍然是一个“向量”。
更确切地说,它足够聪明,能够识别维度上的差异。:-)
我认为您可以做的最简单的事情是使用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