我有一个数据帧
df = pd.DataFrame(data=np.arange(10),columns=['v']).astype(float)
Run Code Online (Sandbox Code Playgroud)
如何确保数字v是整数?我非常关心舍入/截断/浮点表示错误
我有一个空的dataframe.
df=pd.DataFrame(columns=['a'])
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我想生成df2,另一个空数据帧,有两列'a'和'b'.
如果我做
df.columns=df.columns+'b'
Run Code Online (Sandbox Code Playgroud)
它不起作用(我将列重命名为'ab')并且以下都没有
df.columns=df.columns.tolist()+['b']
Run Code Online (Sandbox Code Playgroud)
如何在df中添加单独的列'b',并df.emtpy继续保持True?
使用.loc也是不可能的
df.loc[:,'b']=None
Run Code Online (Sandbox Code Playgroud)
因为它返回
Cannot set dataframe with no defined index and a scalar
Run Code Online (Sandbox Code Playgroud) 我需要将大型数据帧转换为numpy数组.仅保留数值和类型.我知道有很好的记录方法可以这样做.
那么,哪一个更喜欢?
df.values
df._as_matrix()
pd.to_numeric(df)
... others ...
Run Code Online (Sandbox Code Playgroud)
决策因素:
效率
安全地操作nan,np.nans和其他可能的意外值
数值稳定
我有两个数据帧
df_a=
Start Stop Value
0 0 100 0.0
1 101 200 1.0
2 201 1000 0.0
df_b=
Start Stop Value
0 0 50 0.0
1 51 300 1.0
2 301 1000 0.0
Run Code Online (Sandbox Code Playgroud)
我想生成一个DataFrame包含由Startand 标识的区间Stop,其中Value df_a与df_b 相同.对于每一个间隔,我想存储:如果Value是相同的,并且这是在值df_a和df_b.期望的输出:
df_out=
Start Stop SameValue Value_dfA Value_dfB
0 50 1 0 0
51 100 0 0 1
101 200 1 1 1
201 300 0 0 1
[...]
Run Code Online (Sandbox Code Playgroud) 我正在以编程方式打印出 python 中的函数列表。我可以从名字中得到名字
for ifunc,func in enumerate(list_of_functions):
print(str(ifunc)+func.__name__)
Run Code Online (Sandbox Code Playgroud)
如何获取定义函数的源文件名?
如果函数是对象的属性,如何获取父对象的类型?
可移植性python2/3是必须的
我正在使用以下命令写入 excel 文件ExcelWriter:
writer = pd.ExcelWriter(fn,datetime_format=' d hh:mm:ss')
df.to_excel(writer,sheet_name='FOO')
Run Code Online (Sandbox Code Playgroud)
写入操作成功,打开相应的excel文件,我看到日期时间按照要求格式很好。但是,带有 dtype 的数据框的另一列timedelta64[ns]会自动转换为数值,因此在 Python 中我看到
0 days 00:23:33.499998
Run Code Online (Sandbox Code Playgroud)
在 excel 中:
0.016359954
Run Code Online (Sandbox Code Playgroud)
这可能与以天数换算的持续时间相同。有什么方法可以使用控制 timedelta 格式pd.ExcelWriter?
我需要在 sklearn 中使用自定义分数执行单变量特征选择,因此我使用 GenericUnivariateSelect。然而,正如文档中所示,
\n\n选择器的模式:{\xe2\x80\x98percentile\xe2\x80\x99,\xe2\x80\x98k_best\xe2\x80\x99,\xe2\x80\x98fpr\xe2\x80\x99,\xe2\x80\x98fdr \xe2\x80\x99,\xe2\x80\x98fwe\xe2\x80\x99}
\n\n就我而言,我需要选择分数高于特定值的特征,因此我实现了:
\n\nfrom sklearn.feature_selection.univariate_selection import _clean_nans\nfrom sklearn.feature_selection.univariate_selection import f_classif \nimport numpy as np\nimport pandas as pd\nfrom sklearn.feature_selection import GenericUnivariateSelect\nfrom sklearn.metrics import make_scorer \nfrom sklearn.feature_selection.univariate_selection import _BaseFilter\nfrom sklearn.pipeline import Pipeline \n\n\n\nclass SelectMinScore(_BaseFilter):\n # Sklearn documentation: modes for selectors : {\xe2\x80\x98percentile\xe2\x80\x99, \xe2\x80\x98k_best\xe2\x80\x99, \xe2\x80\x98fpr\xe2\x80\x99, \xe2\x80\x98fdr\xe2\x80\x99, \xe2\x80\x98fwe\xe2\x80\x99}\n # custom selector: \n # select features according to the k highest scores.\n def __init__(self, score_func=f_classif, minScore=0.7):\n super(SelectMinScore, self).__init__(score_func)\n self.minScore = minScore\n self.score_func=score_func\n [...]\n def _get_support_mask(self):\n check_is_fitted(self, \'scores_\')\n\n if …Run Code Online (Sandbox Code Playgroud) 我有一个numpy布尔数组
w=np.array([True,False,True,True,False,False,False])
Run Code Online (Sandbox Code Playgroud)
我想得到第一次有n_at_least假值的索引.比如这里
`n_at_least`=1 -> desired_index=1
`n_at_least`=3 -> desired_index=4
Run Code Online (Sandbox Code Playgroud)
我试过了
np.cumsum(~w)
Run Code Online (Sandbox Code Playgroud)
每次False遇到值时都会增加.但是,当True遇到计数器时,计数器不会再次从0开始,所以我只得到False元素的总数而不是最后连续的计数.
我发现了这个不错的功能 pandas.merge_asof。从文档中
pandas.merge_asof(left, right, on=None, left_on=None, right_on=None)
Parameters:
left : DataFrame
right : DataFrame
on : label
Field name to join on. Must be found in both DataFrames.
The data MUST be ordered.
Furthermore this must be a numeric column,such as datetimelike, integer, or float.
On or left_on/right_on must be given.
Run Code Online (Sandbox Code Playgroud)
并且它按预期工作。
但是,我合并的数据框on仅将原来所在的数据框保留为列left。我需要将它们都保留下来
mydf=pandas.merge_asof(left, right, on='Time')
Run Code Online (Sandbox Code Playgroud)
并mydf同时包含Time从left和right
示例数据:
a=pd.DataFrame(data=pd.date_range('20100201', periods=100, freq='6h3min'),columns=['Time'])
b=pd.DataFrame(data=
pd.date_range('20100201', periods=24, freq='1h'),columns=['Time'])
b['val']=range(b.shape[0])
out=pd.merge_asof(a,b,on='Time',direction='forward',tolerance=pd.Timedelta('30min'))
Run Code Online (Sandbox Code Playgroud) 我正在创建一个 conda 环境:
conda env export --name root > myEnv.yml
Run Code Online (Sandbox Code Playgroud)
我在文件中手动将“root”替换为“myEnv”。这是在共享机器上完成的。然后我移动到另一个系统,我这样做:
conda env create -f myEnv.yml
name: my_env
channels:
file://somewhere//
otherpublicrepos
Run Code Online (Sandbox Code Playgroud)
不幸的是,在文件中有一个私人频道,我不得不将其删除
现在我(一个接一个)从 file:// 中的那些丢失的包错误中得到了很多,我必须手动从文件中删除它们。
如何仅安装公共存储库中可用的内容但最终创建环境?
-q 选项没有帮助,conda create输出
ResolvePackageNotFound: - ALIB 3.2.1 1
Run Code Online (Sandbox Code Playgroud)
并在不创造环境的情况下默默返回