相关疑难解决方法(0)

使用pandas按组获取计数

我有一个pandas数据框,其中包含如下所示的数据:

ID  year_month_id   Class
1   201612          A
2   201612          D
3   201612          B
4   201612          Other
5   201612          Other
6   201612          Other
7   201612          A
8   201612          Other
9   201612          A
1   201701          B
Run Code Online (Sandbox Code Playgroud)

因此,ID可以在特定月份的任何课程中,下个月他的课程可能会发生变化.现在我要做的是为每个ID获取它在特定类下的月数以及它所属的最新类.如下所示:

ID  Class_A Class_B Class_D Other Latest_Class
1   2        3       4         0    B
2   12       0       0         0    D
Run Code Online (Sandbox Code Playgroud)

我如何在python中实现这一点.有人可以帮我这个吗?此外,由于真实数据集很大并且无法手动验证,我如何才能获得超过1类的ID列表?

python group-by dataframe pandas pandas-groupby

5
推荐指数
1
解决办法
204
查看次数

长到宽数据。熊猫

我试图将我的数据框从我有一个带有分类变量的列的长格式转换为宽格式,其中每个类别都有自己的价格列。目前,我的数据如下所示:

date-time            date       vendor    payment_type   price
03-10-15 10:00:00    03-10-15     A1            1          50
03-10-15 10:00:00    03-10-15     A1            2          60
03-10-15 10:00:00    03-11-15     A1            1          45
03-10-15 10:00:00    03-11-15     A1            2          70
03-10-15 10:00:00    03-12-15     B1            1          40
03-10-15 10:00:00    03-12-15     B1            2          45
03-10-15 10:00:00    03-10-15     C1            1          60
03-10-15 10:00:00    03-10-15     C1            1          65
Run Code Online (Sandbox Code Playgroud)

我的目标是为每个供应商的价格和每种付款类型设置一列,每天一行。当每天有多个值时,我想使用最大值。最终结果应该是这样的。

Date       A1_Pay1   A2_Pay2 ... C1_Pay1   C1_Pay2
03-10-15     50        60    ...   65        NaN
03-11-15     45        70    ...   NaN       NaN
03-12-15     NaN       NaN   ...   NaN       NaN
Run Code Online (Sandbox Code Playgroud)

我尝试使用 …

python pandas

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

熊猫:转动数据框

为超级新手问题提前道歉.

我正在学习使用pandas,并且有这个简单的操作,我无法弄清楚如何执行:

我有以下数据框:

print df 
Out[19]: 
USERNAME  REQUEST_TYPE   STATUS  LATENCY
0      foo             1  SUCCESS        7
1      foo             2  SUCCESS       17
2      bar             1  SUCCESS       10
3      bar             2  FAILURE       12
Run Code Online (Sandbox Code Playgroud)

我希望每个USERNAME都有一行,这是每个REQUEST_TYPE的STATUS和LATENCY列的串联.输出应如下所示:

USERNAME    STATUS_1  LATENCY_1     STATUS_2    LATENCY_2
0      foo  SUCCESS     7           SUCCESS        17
1      bar  SUCCESS     10          FAILURE        12
Run Code Online (Sandbox Code Playgroud)

我想到了以pandas.groupby(df,['USERNAME','REQUEST_TYPE'])开头的东西,但我不知道如何连接回来的行,以及是否有任何方法可以创建新的列名.

谢谢!

python pandas

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

pandas - 根据另一列中的每个唯一值计算DataFrame中值的出现次数

假设我有一个DataFrame:

    term      score
0   this          0
1   that          1
2   the other     3
3   something     2
4   anything      1
5   the other     2
6   that          2
7   this          0
8   something     1
Run Code Online (Sandbox Code Playgroud)

我如何通过score列中的唯一值来计算term列中的实例?产生如下结果:

    term      score 0     score 1     score 2     score 3
0   this            2           0           0           0
1   that            0           1           1           0
2   the other       0           0           1           1
3   something       0           1           1           0
4   anything        0           1           0           0
Run Code Online (Sandbox Code Playgroud)

我在这里读到的相关问题包括Python Pandas计算和总结特定条件, …

python pivot-table dataframe pandas

3
推荐指数
2
解决办法
879
查看次数

熊猫-转置一列

我在与熊猫转置时遇到困难。

我有以下df:

date         name    quantity
1/1/2018     A       5
1/1/2018     B       6
1/1/2018     C       7
1/2/2018     A       9
1/2/2018     B       8
1/2/2018     C       6
Run Code Online (Sandbox Code Playgroud)

我最终希望为每个日期的所有名称及其数量创建成对关联。为此,我正在尝试首先从此df创建以下输出:

 date       A    B    C
 1/1/2018   5    6    7
 1/2/2018   9    8    6
Run Code Online (Sandbox Code Playgroud)

转置对我来说很难,因为我可以获得重复的列标题,但是我也不想通过先删除它们而丢失任何数据。我觉得答案可能是我没有真正使用的panda实用程序,我可能正在转置上进行隧道传输...

python dataframe pandas

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

我需要根据列上的值从熊猫数据帧制作真值表

我有一个这样的数据框:

  name vals
0  foo    X
1  foo    Y
2  foo    Z
3  bar    Y
4  bar    Z
5  bar    Q
Run Code Online (Sandbox Code Playgroud)

我怎样才能把它变成这样:

      Q  X  Y  Z
name            
foo   0  1  1  1
bar   1  0  1  1
Run Code Online (Sandbox Code Playgroud)

第一个 df 的代码:

df = pd.DataFrame({"name": ["foo", "foo", "foo",
                              "bar", "bar", "bar"],
                        "vals": ["X", "Y", "Z",
                              "Y", "Z", "Q"],
                        })
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

2
推荐指数
1
解决办法
815
查看次数

使用值的出现次数在熊猫中创建数据透视表

我正在尝试在熊猫中创建交叉表/数据透视表:

import pandas as pd
import numpy as np

df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two','two'],'bar': ['A', 'A', 'C', 'B', 'B', 'C']})
Run Code Online (Sandbox Code Playgroud)

但是我的尝试是:

pd.pivot(df, index='foo', columns='bar')
Run Code Online (Sandbox Code Playgroud)

TypeError:pivot_simple()为参数“ index”获得了多个值

第二个:

pd.pivot_table(data = df, values = 'bar', index = 'bar', columns = 'foo', aggfunc=lambda x: np.count_nonzero(x))

foo one two
bar     
A   4.0 NaN
B   NaN 4.0
C   2.0 2.0
Run Code Online (Sandbox Code Playgroud)

我想要实现的输出如下:

        A   B   C
one     2       1
two        2    1
Run Code Online (Sandbox Code Playgroud)

python pivot numpy pivot-table pandas

2
推荐指数
1
解决办法
3083
查看次数

取消隐藏数据框并加入pandas

我有这个数据帧:

+-------+-----+---------+
| group | id  |  value  |
+-------+-----+---------+
| A     |  92 | 123.123 |
| A     | 105 |    9034 |
| A     | 999 |     421 |
| B     |  92 |   32019 |
| B     | 105 |    3281 |
+-------+-----+---------+
Run Code Online (Sandbox Code Playgroud)

我想转动'group'列,使其值成为'value'列名称的一部分,观察结果由'id'连接,如下所示:

+-----+---------+---------+
| id  | A_value | B_value |
+-----+---------+---------+
|  92 | 123.123 | 32019   |
| 105 |    9034 | 3281    |
| 999 |     421 | nan     |
+-----+---------+---------+
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方法是什么?

python pivot join dataframe pandas

2
推荐指数
1
解决办法
48
查看次数

Pandas 数据框过滤器和 For 循环

我有一个包含许多列的数据框。我正在尝试过滤其中一列(“区域”)并根据“区域”列中的这 4 个区域中的每一个创建一个单独的数据框。然后在这 4 个单独的数据帧中的每一个上运行包含大量计算的大代码块,而不必单独重写大代码块 4 次。

我知道我可以使用 .isin 函数进行列过滤,并为我的 4 个地区(美国、新兴市场、欧洲、亚洲)执行此操作:

US = df[df['Region'].isin('US')]
EM = df[df['Region'].isin('EM')]
Europe = df[df['Region'].isin('Europe')]
Asia = df[df['Region'].isin('Asia')]
Run Code Online (Sandbox Code Playgroud)

然后在 4 个新数据帧上运行我的代码块。但是我会分别执行我的大块计算代码 4 次,这太混乱了。我怎样才能在循环中做到这一点,所以我只需要一次编写我的大代码块?如果除了 for 循环之外,我还可以使用另一个函数来执行此操作,这也很棒。感谢任何帮助 - 尝试学习。

虚拟代码:

df = pd.DataFrame({'a':[1,2,3,4,5,6], 'b':['cats','dogs','birds','pianos','elephant','dinos'], 'Region' : ['EM', 'US', 'US', 'Europe', 'Asia', 'Asia']})
Run Code Online (Sandbox Code Playgroud)

python for-loop pandas pandas-groupby

2
推荐指数
1
解决办法
4382
查看次数

无法重塑(枢轴)熊猫 DF

所以我有这个 DF:

In [130]: dfAbr
Out[130]: 
           ip ospfArea router_name
0     1.1.1.1  0.0.0.2   Router1-1
1     1.1.1.2  0.0.0.2   Router1-2
140   5.5.5.1  0.0.0.5   Router5-1
141   5.5.5.2  0.0.0.5   Router5-2
Run Code Online (Sandbox Code Playgroud)

我想将其重塑为 2 行数据框,例如:

在此处输入图片说明

我一直在玩stack/unstackpivot 功能,但不能走那么远。

例如,dfAbr1 = pd.DataFrame(dfAbr.set_index('ospfArea').stack()).reset_index()重命名列名会产生以下结果:

In [151]: dfAbr1
Out[151]: 
  ospfArea       level1     level2
0  0.0.0.2           ip    1.1.1.1
1  0.0.0.2  router_name  Router1-1
2  0.0.0.2           ip    1.1.1.2
3  0.0.0.2  router_name  Router1-2
4  0.0.0.5           ip    5.5.5.1
5  0.0.0.5  router_name  Router5-1
6  0.0.0.5           ip    5.5.5.2
7  0.0.0.5  router_name  Router5-2
Run Code Online (Sandbox Code Playgroud)

从那里开始,我想要pivot它,就像这样: …

python pivot reshape pandas

2
推荐指数
1
解决办法
108
查看次数