我有以下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到前面,即将其设置为第一列,使其他列的顺序保持不变?
我想知道是否可以使用pandas to_csv()函数将数据帧添加到现有的csv文件中.csv文件与加载的数据具有相同的结构.
对于给定的数据框:
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中有一些神奇的方法可以被类覆盖,以控制某些内置函数处理这些类的成员的方式。例如,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) 我试图在熊猫中绘制一些数据,并且内置的绘图功能可以方便地绘制每列一行.我想要做的是根据我制作的分类手动为每一行分配颜色.
以下作品:
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)
我的问题是:
编辑:
我意识到即使在第一种情况下,代码也没有按照我的预期去做.似乎pandas仅匹配DataFrame和Series的索引,如果两者都是从0开始的整数索引.如果不是这种情况,则抛出KeyError或者如果索引是str,则使用元素的顺序.
它是否正确?有没有办法匹配Series和DataFrame索引?或者我必须确保以正确的顺序传递颜色列表?