小编Chu*_*uHo的帖子

使用字典映射数据帧索引

为什么不df.index.map(dict)喜欢的工作df['column_name'].map(dict)

这是尝试使用index.map的一个小例子:

import pandas as pd

df = pd.DataFrame({'one': {'A': 10, 'B': 20, 'C': 30, 'D': 40, 'E': 50}})
map_dict = {'A': 'every', 'B': 'good', 'C': 'boy', 'D': 'does', 'E': 'fine'}
df
'''
    one
A   10
B   20
C   30
D   40
E   50
'''

df['two'] = df.index.map(mapper=map_dict)
Run Code Online (Sandbox Code Playgroud)

这引起了提升 TypeError: 'dict' object is not callable

喂它一个lambda工作:

df['two'] = df.index.map(mapper=(lambda x: map_dict[x])); df
'''
   one    two
A   10  every
B   20   good
C   30    boy
D   40 …
Run Code Online (Sandbox Code Playgroud)

python pandas

16
推荐指数
4
解决办法
2万
查看次数

根据df.query设置值?

我想根据查询设置列的值.我可能会用它.where来完成这个,但是标准.query是字符串,我更容易维护,特别是当标准变得复杂时.

import numpy as np
import pandas as pd

np.random.seed(51723)
df = pd.DataFrame(np.random.rand(n, 3), columns=list('abc'))
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列d,并将值设置为1,满足这些条件:

criteria = '(a < b) & (b < c)'
Run Code Online (Sandbox Code Playgroud)

除其他外,我试过:

df['d'] = np.nan
df.query(criteria).loc[:,'d'] = 1
Run Code Online (Sandbox Code Playgroud)

但是,除非SettingWithCopyWarning尽管我正在使用,否则这似乎什么都不做.loc

inplace像这样传递:

df.query(criteria, inplace=True).loc[:,'d'] = 1
Run Code Online (Sandbox Code Playgroud)

AttributeError: 'NoneType' object has no attribute 'loc'

python pandas

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

标题和标签未显示在直方图中

我在这里调试这段代码时遇到困难。我似乎无法弄清楚为什么标题和标签不显示。希望这不是一件显而易见的事情。但我已经让它与其他图表一起工作得很好......

import numpy as np
import matplotlib.pyplot as plt


data =[5434, 4948, 4521, 4570, 4990, 5702, 5241, 5112, 5015, 4659, 4806,
   4637, 5670, 4381, 4820, 5043, 4886, 4599, 5288, 5299, 4848, 5378, 
   5260, 5055, 5828, 5218, 4859, 4780, 5027, 5008, 4609, 4772, 5133,
   5095, 4618, 4848, 5089, 5518, 5333, 5164, 5342, 5069, 4755, 4925,
   5001, 4803, 4951, 5679, 5256, 5207, 5621, 4918, 5138, 4786, 4500,
   5461, 5049, 4974, 4592, 4173, 5296, 4965, 5170, 4740, 5173, 4568,
   5653, 5078, 4900, 4968, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib jupyter-notebook

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

如何在散点图的 x 轴上绘制每分钟的时间

为 1 秒采样数据设置分钟小刻度:OverflowError: int too big to convert

考虑这个数据帧,采样间隔为 1 秒,持续时间约为 30 分钟:

import matplotlib.pyplot as plt
from matplotlib.dates import MinuteLocator
import pandas as pd

ndex = pd.date_range('2021-08-01 07:07:07', '2021-08-01 07:41:12', freq='1S', name='Time') 
df = pd.DataFrame(data=np.random.randint(1, 100, len(ndex)), index=ndex, columns=['A'])
Run Code Online (Sandbox Code Playgroud)

现在我们绘制它:

fig, ax = plt.subplots()
df.plot(color='red', marker='x', lw=0, ms=0.2, ax=ax)
Run Code Online (Sandbox Code Playgroud)

这创造了一个没有任何抱怨的情节: 时间与兰特

现在我希望每分钟都有轻微的滴答声。

我试过这个:

ax.xaxis.set_minor_locator(MinuteLocator())
Run Code Online (Sandbox Code Playgroud)

但这失败了OverflowError: int too big to convert

python datetime matplotlib pandas x-axis

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

标签 统计

python ×4

pandas ×3

matplotlib ×2

datetime ×1

jupyter-notebook ×1

x-axis ×1