相关疑难解决方法(0)

如何更改DataFrame列的顺序?

我有以下DataFrame(df):

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(10, 5))
Run Code Online (Sandbox Code Playgroud)

我通过赋值添加更多列:

df['mean'] = df.mean(1)
Run Code Online (Sandbox Code Playgroud)

如何将列移动mean到前面,即将其设置为第一列,使其他列的顺序保持不变?

python dataframe pandas

729
推荐指数
23
解决办法
76万
查看次数

如何将pandas数据添加到现有的csv文件?

我想知道是否可以使用pandas to_csv()函数将数据帧添加到现有的csv文件中.csv文件与加载的数据具有相同的结构.

python csv dataframe pandas

200
推荐指数
5
解决办法
20万
查看次数

Pandas Pivot Table手动排序列

对于给定的数据框:

UUT                  testa  testb  testc  testd
DateTime                                
2017-11-21 18:47:29    1.0    1.0    1.0    3.0
2017-11-21 18:47:30    1.0    2.0    1.0    4.0
2017-11-21 18:47:31    1.0    2.0    5.0    2.0
2017-11-21 18:47:32    1.0    2.0    5.0    1.0
2017-11-21 18:47:33    1.0    2.0    5.0    4.0
2017-11-21 18:47:34    1.0    2.0    5.0    1.0
Run Code Online (Sandbox Code Playgroud)

如果我想要以下顺序,我怎么能手动重新排列我想要的列?

testc, testd, testa, testb
Run Code Online (Sandbox Code Playgroud)

因此表格和情节将以这种方式:

UUT                  testc  testd  testa  testb  
DateTime                                         
2017-11-21 18:47:29    1.0    3.0    1.0    1.0  
2017-11-21 18:47:30    1.0    4.0    1.0    2.0  
2017-11-21 18:47:31    5.0    2.0    1.0    2.0  
2017-11-21 18:47:32    5.0    1.0    1.0    2.0  
2017-11-21 …
Run Code Online (Sandbox Code Playgroud)

python sorting pivot-table pandas

9
推荐指数
1
解决办法
2423
查看次数

Python中有sorted()的神奇方法吗?

我知道Python中有一些神奇的方法可以被类覆盖,以控制某些内置函数处理这些类的成员的方式。例如,len()和的行为可以通过魔术方法和str()覆盖:__len__()__str__()

class EmptySet(object):
    def __len__(self):
        return 0

    def __str__(self):
        return '[]'

>>> e = EmptySet()
>>> str(e)
[]

>>> len(e)
0
Run Code Online (Sandbox Code Playgroud)

还有__cmp__()and__ge__()__le__()方法来控制如何比较这些对象以及如何对它们的列表进行排序list.sort()。我的问题不是关于自定义列表中对象的顺序,而是关于对对象本身进行排序。假设该集合不为空并且我想用sorted()它来排序:

class SetOfTwo(object):
    def __init__(self, a , b):
        el_0 = a
        el_1 = b

    def __len__(self):
        return 2

    def __str__(self):
        return '[{}, {}]'.format(el_0, el_1)
Run Code Online (Sandbox Code Playgroud)

sorted()如果元素不按顺序排列,我可以实现一种神奇的方法来翻转元素吗?我正在想象以下行为:

>>> s = SetOfTwo(2, 1)
>>> str(s)
[2, 1]

>>> t = sorted(s)
>>> str(t)
[1, 2] …
Run Code Online (Sandbox Code Playgroud)

python oop magic-methods

7
推荐指数
1
解决办法
8751
查看次数

在pandas中指定线条颜色

我试图在熊猫中绘制一些数据,并且内置的绘图功能可以方便地绘制每列一行.我想要做的是根据我制作的分类手动为每一行分配颜色.

以下作品:

df = pd.DataFrame({'1': [1, 2, 3, 4], '2': [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=['1','2'])
df.plot(color = s)
Run Code Online (Sandbox Code Playgroud)

但是当我的索引是整数时它不再起作用并抛出KeyError:

df = pd.DataFrame({1: [1, 2, 3, 4], 2: [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=[1,2])
df.plot(color = s)
Run Code Online (Sandbox Code Playgroud)

我理解它的方式是,当使用整数索引时,它必须从0开始.这是我的猜测,因为以下工作原理:

df = pd.DataFrame({0: [1, 2, 3, 4], 1: [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=[1,0])
df.plot(color = s)
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 这里发生了什么?
  • 假设我有一个不是从0开始的整数索引或者不是由连续数字组成的,那么如何在不必将索引转换为字符串或从0开始重新索引的情况下完成这项工作呢?

编辑:

我意识到即使在第一种情况下,代码也没有按照我的预期去做.似乎pandas仅匹配DataFrame和Series的索引,如果两者都是从0开始的整数索引.如果不是这种情况,则抛出KeyError或者如果索引是str,则使用元素的顺序.

它是否正确?有没有办法匹配Series和DataFrame索引?或者我必须确保以正确的顺序传递颜色列表?

python pandas

5
推荐指数
3
解决办法
1万
查看次数

标签 统计

python ×5

pandas ×4

dataframe ×2

csv ×1

magic-methods ×1

oop ×1

pivot-table ×1

sorting ×1