从pandas DataFrame中选择单个列时(例如df.iloc[:, 0]
,df['A']
或df.A
等),结果矢量将自动转换为Series而不是单列DataFrame。但是,我正在编写一些将DataFrame作为输入参数的函数。因此,我更喜欢处理单列DataFrame而不是Series,以便函数可以假定df.columns是可访问的。现在,我必须使用来将Series显式转换为DataFrame
pd.DataFrame(df.iloc[:,0])
。这似乎不是最干净的方法。是否有更优雅的方法直接从DataFrame进行索引,以使结果为单列DataFrame而不是Series?
正如@Jeff提到的,有几种方法可以做到这一点,但我建议使用loc / iloc来使其更明确(如果尝试歧义,请提早出错):
In [10]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
In [11]: df
Out[11]:
A B
0 1 2
1 3 4
In [12]: df[['A']]
In [13]: df[[0]]
In [14]: df.loc[:, ['A']]
In [15]: df.iloc[:, [0]]
Out[12-15]: # they all return the same thing:
A
0 1
1 3
在整数列名称的情况下,后两种选择消除了歧义(正是创建loc / iloc的原因)。例如:
In [16]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 0])
In [17]: df
Out[17]:
A 0
0 1 2
1 3 4
In [18]: df[[0]] # ambiguous
Out[18]:
A
0 1
1 3
我有这个。我想创建一个,它保存如下 但是通过这样做 问题是每个现在都保存为。例如,第3行是 对于那些怀疑论者,我尝试了,它是。第2列工作正常。 如何保存为每行,而不是?也就是说,我如何保存所有行的作为而不是?
问题内容: 在使用Python Pandas进行读写时,是否可以保留csv文件中列的顺序?例如,在此代码中 输出文件可能会有所不同,因为未保留列。 问题答案: 当前版本的Pandas(‘0.11.0’)中似乎存在一个错误,这意味着Matti John的答案将不起作用。如果您指定要写入文件的列,则它们将按字母顺序书写,而只是根据cols中的列表重新标记。例如,此代码: 导致以下(错误)输出: 您可以
在查看了这里、这里和文档之后,我仍然无法找到一种方法来根据所有这些条件从数据帧中选择行: 按给定列的值列表中给定的顺序返回行 举个例子,让我们 让 然后我想得到以下数据帧: 我怎样才能做到这一点?Zero的答案看起来很有希望,因为它是我发现的唯一一个保留原始索引的答案,但它不适用于重复。关于如何修改/推广它有什么想法吗?
问题内容: 我有一个带有4列的pandas DataFrame,我想创建一个 只有 三个列的 新 DataFrame 。这个问题类似于:从数据框中提取特定的列,但对于不是R的熊猫来说。以下代码不起作用,会引发错误,并且肯定不是熊猫的方式。 熊猫人做这件事的方法是什么? 问题答案: 有一种方法可以做到,它实际上看起来类似于R 在这里,您只是从原始数据框中选择所需的列,并为这些列创建变量。如果您想完全
我想将pandas数据帧保存为csv文件,问题是要将np.array转换为字符串。 我想将数组保存为数组,但在文档中找不到任何有用的内容。 解数独=[123345894324321321](整数列表) n_splits=3(整数) 最终结果应该是: [123 345 894 324 321 321] 1,[123 345 894 324 321 321] 3,[123 345 894 324 32
我有一个选择控件: 然后使用jQuery发送AJAX请求,序列化表单: 但是,例如,如果我选择类别1,则serialize()函数序列化标签,而不是选项的值。因此请求将为 有没有一种方法告诉函数发送值,像这样: