小编lan*_*tar的帖子

在 pandas 的重新采样中使用自定义营业时间

我正在尝试在 pandas 中定义的自定义工作时间内重新采样。我正在尝试在自定义工作日获取投资栏的总和。(自定义工作日:23:30-7:00)

Date                Name    Invested
3/16/2017 11:50 PM  John    0.3
3/17/2017 12:54 AM  John    0.25
3/17/2017 1:02 AM   John    0.25
3/17/2017 1:05 AM   John    0.025
3/17/2017 1:31 AM   John    0.083333
3/17/2017 2:00 AM   John    0.2
3/17/2017 2:07 AM   John    0.2
Run Code Online (Sandbox Code Playgroud)

代码

from pandas.tseries.offsets import BusinessHour
bh = BusinessHour(start='23:30', end="7:00")
#currently working but not what I want
new_df = orig.resample(rule="B", closed="right", label="left", base=23).sum()
#throws all kinds of erroes when trying to use my custom business hour
new_df = orig.resample(rule=bh, closed="right", …
Run Code Online (Sandbox Code Playgroud)

python pandas

5
推荐指数
0
解决办法
992
查看次数

在 Pandas 中使用 groupby 时恢复分层列索引

groupby在 Pandas 中使用Pandas 来计算数据的一些聚合统计数据,其中数据框中的列是用分层索引组织的。对于计算的统计信息,我想最终回到表格形式,其中将组重新转换为具有组值的列,例如:

index = pd.MultiIndex.from_tuples([('A', 'a'), ('B', 'b')])
df = pd.DataFrame(np.random.randn(8,2), columns=index)
Run Code Online (Sandbox Code Playgroud)

这导致例如这个数据框

          A         B
          a         b
0  0.511157  0.334748
1  0.031113 -0.477456
2  0.288080 -0.258238
3  0.138467 -0.955547
4 -0.087873  0.017494
5 -0.667393  1.190039
6 -0.068245 -1.282864
7 -0.996982  0.589667
Run Code Online (Sandbox Code Playgroud)

现在我使用 groupby 计算统计数据并重置索引以重新创建平面数据框:

df.groupby([('A','a')]).mean().reset_index()
     (A, a)         B
                    b
0 -0.996982  0.589667
1 -0.667393  1.190039
2 -0.087873  0.017494
3 -0.068245 -1.282864
4  0.031113 -0.477456
5  0.138467 -0.955547
6  0.288080 -0.258238
7  0.511157  0.334748
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它('A', 'a') …

python pandas

4
推荐指数
1
解决办法
957
查看次数

add_subdirectory()无需安装任何程序

使用CMake,我add_subdirectory(gtest)可以构建gtest来测试我的项目。我还使用CPack进行安装。

问题是gtest存储库(这是git子模块)install()在某些文件上运行,因此它们最终出现在我的安装程序中!显然我不想要那个。有没有一种方法可以禁用install()给定子目录的命令,而不仅仅是从CMakeLists中删除它们?

cmake googletest cpack

4
推荐指数
1
解决办法
635
查看次数

从单列Pandas数据帧生成单词云

我有一个Pandas数据框,有一列:犯罪类型.该列包含16种不同的"犯罪类别",我希望将其视为文字云,其中的单词根据数据框中的频率进行调整.

在此输入图像描述

我尝试使用以下代码执行此操作:

将数据带入:

fields = ['Crime type']

text2 = pd.read_csv('allCrime.csv', usecols=fields)
Run Code Online (Sandbox Code Playgroud)

要生成单词云:

wordcloud2 = WordCloud().generate(text2)
# Generate plot
plt.imshow(wordcloud2)
plt.axis("off")
plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

TypeError: expected string or bytes-like object
Run Code Online (Sandbox Code Playgroud)

我能够使用以下代码从完整数据集创建一个早期的词云,但我希望单词cloud只生成特定列中的单词"犯罪类型"('allCrime.csv'包含大约13列) :

text = open('allCrime.csv').read()
wordcloud = WordCloud().generate(text)
# Generate plot
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
Run Code Online (Sandbox Code Playgroud)

我是Python和Pandas的新手(并且通常编码!)所以感谢所有的帮助.

python dataframe word-cloud pandas

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

从 Excel 导出的 Pandas DateTime 中删除时间

我有一个使用 pyODBC 查询的 Pandas Dataframe,它返回“日期”作为浮点数。在转换为具有 ymd 格式的字符串后,我将数据类型更改为日期时间,然后使用 ExcelWriter 创建一个 Excel 文件。生成的 Excel 数据保留 yyyymmdd 00:00:00 格式。一些帖子建议在 Pandas 中创建“helper”列并使用 dt.normalize (?),但我想在导出时完成这一切......可能吗?一般来说更好的方法?

注意[日期]是三列的列表

df[date] = df[date].apply(lambda x: pd.to_datetime(x.astype(str), format = '%Y%m%d'))

df Col 1

2017-01-19 
2016-12-29 
2017-01-04
2016-12-29
2017-01-04  

writer = ExcelWriter('MyData.xlsx', date_format = 'yyyy mm dd')

df.to_excel(writer, 'DATA')

writer.save()

2017-01-19 00:00:00
2016-12-29 00:00:00
2017-01-04 00:00:00
2016-12-29 00:00:00
2017-01-04 00:00:00
2017-01-04 00:00:00
2017-01-16 00:00:00
Run Code Online (Sandbox Code Playgroud)

python datetime pandas

4
推荐指数
1
解决办法
8644
查看次数

带日期的 matpolotlib 固定定位器

如果我有基于日期的 x 轴,如何使用代码 API 在所需位置添加刻度?使用 aFixedLocator不起作用并会导致异常:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker

dates = pd.date_range('20130101',periods=6)
series = pd.Series([1,3,5,8,6,8], index=dates)
p = plt.figure()
series.plot(ax=p.gca())
p.gca().xaxis.set_major_locator(matplotlib.ticker.FixedLocator(dates))
Run Code Online (Sandbox Code Playgroud)

结果是:

Traceback (most recent call last):
  File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/backends/backend
_qt5agg.py", line 176, in __draw_idle_agg
    FigureCanvasAgg.draw(self)
  File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/backends/backend
_agg.py", line 474, in draw
    self.figure.draw(self.renderer)
  File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/artist.py", line
 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/figure.py", line
 1159, in draw
    func(*args)
  File "/media/local_data/languitar/miniconda2/envs/monitoring/lib/python2.7/site-packages/matplotlib/artist.py", line
 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File …
Run Code Online (Sandbox Code Playgroud)

python datetime matplotlib

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

将float64列转换为datetime pandas

我有以下pandas DataFrame专栏dfA['TradeDate']:

0     20100329.0
1     20100328.0
2     20100329.0
...
Run Code Online (Sandbox Code Playgroud)

我希望将它转换为日期时间.

基于SO上的另一个步骤,我首先将其转换为字符串,然后应用该strptime函数.

dfA['TradeDate'] = datetime.datetime.strptime( dfA['TradeDate'].astype('int').to_string() ,'%Y%m%d')
Run Code Online (Sandbox Code Playgroud)

但是,这会返回我的格式不正确的错误(ValueError).

我发现的一个问题是列不是正确的字符串,而是对象.

当我尝试:

dfA['TradeDate'] = datetime.datetime.strptime( dfA['TradeDate'].astype(int).astype(str),'%Y%m%d')
Run Code Online (Sandbox Code Playgroud)

它返回:必须是Str而不是Series.

python datetime dataframe python-3.x pandas

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