当前位置: 首页 > 面试题库 >

在熊猫中分配线条颜色

宣冥夜
2023-03-14
问题内容

我试图在熊猫中绘制一些数据,并且内置的绘图功能可以方便地在每列中绘制一行。我要做的是根据我进行的分类为每行手动分配颜色。

以下作品:

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)

但是,当我的索引是整数时,它将不再起作用并抛出为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)

我的理解是,当使用整数索引时,它必须以某种方式从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)

我的问题是:

  • 这是怎么回事
  • 假设我有一个不是从0开始或不是由连续数字组成的整数索引,那么我如何进行这项工作而不必将索引转换为从0开始的字符串或重新索引?

编辑:

我意识到即使在第一种情况下,代码也无法实现我期望的功能。似乎pandas仅在两者都是从0开始的整数索引时才匹配DataFrame和Series的索引。如果不是,则抛出KeyError,或者如果索引为str则使用元素的顺序。

这个对吗?有没有办法匹配Series和DataFrame索引?还是必须确保以正确的顺序传递颜色列表?


问题答案:

这是怎么回事

关键字参数color继承自matplotlib.pyplot.plot()。文档中的详细信息并未明确指出在打印时可以放入颜色列表。鉴于color是matplotlib的关键字参数,我建议不要使用Pandas
Series来保存颜色值。

我该如何工作?

使用列表而不是系列。如果您使用的系列的索引旨在使DataFrame的列与特定颜色匹配,则需要首先对系列进行排序。如果列不按顺序排列,则还需要对列进行排序。

# Option 1
s = s.sort_index()
df.plot(color = s.values) # as per Fiabetto's answer

# Option 2
df.plot(color = ['c', 'y']) # other method


 类似资料:
  • 我试图在pandas中绘制一些数据,内置的plot函数可以方便地为每列绘制一行。我想做的是根据我所做的分类手动为每一行指定一种颜色。 以下工作: 但是,当我的索引是整数时,它不再工作,并作为KeyError抛出: 我的理解是,当使用整数索引时,它必须从0开始。这是我的猜测,因为以下方法也有效: 我的问题是: 这里发生了什么 编辑: 我意识到,即使在第一种情况下,代码也没有达到我预期的效果。似乎只有

  • 我想分配一个组的第一行。 输入: 我尝试了: 但是我只得到第一排。 我想要这样的输出:

  • 我试图开发以下过滤器与熊猫数据帧: 我有四列,,,和 如何将其作为聚合函数编写? 下面是一个编写效率低下的工作示例: 输出:

  • 我想对两列使用不同的条件来聚合行。 当我做,我得到输出1 当我做时,我得到输出2 是否有一种方法可以进行聚合,将输出1显示到,将输出2显示到?

  • 我正在从pandas输出一个csv文件,其中包含一些用于latex报告的调查文本。一些响应在其响应中带有逗号,因此熊猫将数据输出为 通过将字段用双引号括起来,显然可以处理字段中的逗号。 我希望上面看起来像这样: 通过将所述字段包装在{}中,因为这是latex包可以理解的分隔符。 有没有办法告诉熊猫。要做这个吗? 我已经尝试了以下方法 当然,当我需要“}”时,它会用“{”关闭文本包装 更新当我使用p

  • 问题内容: 我想根据以下条件创建一个带有数值的新列: 一种。 b。 C。所有其他组合, 我希望最终结果如下: 我该怎么做? 问题答案: 为此,可以使用做,条件使用位和用于和与周围的多个条件括号由于运算符优先级。因此,返回条件为true的地方,否则返回: