我试过了:
x=pandas.DataFrame(...)
s = x.take([0], axis=1)
Run Code Online (Sandbox Code Playgroud)
并s获得一个DataFrame,而不是一个系列.
例如,我有:
In [1]: df = pd.DataFrame([8, 9],
index=pd.MultiIndex.from_tuples([(1, 1, 1),
(1, 3, 2)]),
columns=['A'])
In [2] df
Out[2]:
A
1 1 1 8
3 2 9
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法从索引中删除最后一个级别:
In [3]: pd.DataFrame(df.values,
index=df.index.droplevel(2),
columns=df.columns)
Out[3]:
A
1 1 8
3 9
Run Code Online (Sandbox Code Playgroud) 有没有办法将NaN存储在Numpy整数数组中?我明白了:
a=np.array([1],dtype=long)
a[0]=np.nan
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
Run Code Online (Sandbox Code Playgroud) 我有一个pandas.DataFrame名为name包含字符串的列.我想获得列中不止一次出现的名称列表.我怎么做?
我试过了:
funcs_groups = funcs.groupby(funcs.name)
funcs_groups[(funcs_groups.count().name>1)]
Run Code Online (Sandbox Code Playgroud)
但它并没有过滤出单身人士的名字.
在Visual Studio中,是否有键盘快捷键导航(移动光标)到最后编辑的位置(如PyCharm的Ctrl+ Shift+ Backspace)?
的CTRL+ -shourtcut移动到最后位置(不是最后编辑位置),这是对我来说用处不大.
我有一个pandas.DatetimeIndex,例如:
pd.date_range('2012-1-1 02:03:04.000',periods=3,freq='1ms')
>>> [2012-01-01 02:03:04, ..., 2012-01-01 02:03:04.002000]
Run Code Online (Sandbox Code Playgroud)
我想将日期舍入Timestamp到最接近的秒.我怎么做?预期结果类似于:
[2012-01-01 02:03:04.000000, ..., 2012-01-01 02:03:04.000000]
Run Code Online (Sandbox Code Playgroud)
是否有可能通过将Numpy四舍五入datetime64[ns]到几秒而不改变dtype [ns]?
np.array(['2012-01-02 00:00:00.001'],dtype='datetime64[ns]')
Run Code Online (Sandbox Code Playgroud) 我想从csv(文本)文件中逐行读取(在Python 2.7中),该文件是7z压缩的.我不想解压缩整个(大)文件,而是要对行进行流式处理.
我尝试pylzma.decompressobj()失败了.我收到数据错误.请注意,此代码尚未逐行读取:
input_filename = r"testing.csv.7z"
with open(input_filename, 'rb') as infile:
obj = pylzma.decompressobj()
o = open('decompressed.raw', 'wb')
obj = pylzma.decompressobj()
while True:
tmp = infile.read(1)
if not tmp: break
o.write(obj.decompress(tmp))
o.close()
Run Code Online (Sandbox Code Playgroud)
输出:
o.write(obj.decompress(tmp))
ValueError: data error during decompression
Run Code Online (Sandbox Code Playgroud) 如何实现组合模式?我有一个Container具有属性对象的类Contained.我想通过简单地调用来重定向/允许访问所有Contained类的方法.我是否以正确的方式做正确的事情?Containermy_container.some_contained_method()
我使用类似的东西:
class Container:
def __init__(self):
self.contained = Contained()
def __getattr__(self, item):
if item in self.__dict__: # some overridden
return self.__dict__[item]
else:
return self.contained.__getattr__(item) # redirection
Run Code Online (Sandbox Code Playgroud)
背景:
我正在尝试构建一个类(Indicator),它增加了现有类(pandas.DataFrame)的功能.Indicator将拥有所有的方法DataFrame.我可以使用继承,但我遵循"赞成组合而不是继承 "的建议(参见例如:python:inheriting或composition中的答案).不继承的一个原因是因为基类不可序列化,我需要序列化.
我发现了这个,但我不确定它是否符合我的需要.
我有一只大熊猫.正数系列.我需要找到"异常值"的索引,其值离开3前一个"规范"或更多.
如何向量化此功能:
def baseline(s):
values = []
indexes = []
last_valid = s.iloc[0]
for idx, val in s.iteritems():
if abs(val - last_valid) >= 3:
values.append(val)
indexes.append(idx)
else:
last_valid = val
return pd.Series(values, index=indexes)
Run Code Online (Sandbox Code Playgroud)
例如,如果输入是:
import pandas as pd
s = pd.Series([7,8,9,10,14,10,10,14,100,14,10])
print baseline(s)
Run Code Online (Sandbox Code Playgroud)
所需的输出是:
4 14
7 14
8 100
9 14
Run Code Online (Sandbox Code Playgroud)
请注意,s 10之后的值14不会返回,因为它们是"恢复正常"值.
编辑:
abs()到代码中.数字是积极的.如何检查是否将可选参数传递给方法?
public void ExampleMethod(int required, string optionalstr = "default string",
int optionalint = 10)
{
if (optionalint was passed)
return;
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用Nullable<T>.HasValue(MSDN定义,MSDN示例):
int default_optionalint = 0;
public void ExampleMethod(int required, int? optionalint,
string optionalstr = "default string")
{
int _optionalint = optionalint ?? default_optionalint;
}
Run Code Online (Sandbox Code Playgroud) pandas ×6
python ×6
numpy ×3
c# ×2
dataframe ×2
7zip ×1
composition ×1
date ×1
date-format ×1
datetime ×1
editor ×1
group-by ×1
inheritance ×1
integer ×1
multi-index ×1
nan ×1
nullable ×1
py7zlib ×1
python-2.7 ×1
series ×1
stream ×1