私信  •  关注

Mayank Porwal

Mayank Porwal 最近回复了
2 年前
回复了 Mayank Porwal 创建的主题 » 基于python dataframe中的其他列计算列的计数

可以使用直接过滤变换中的行 Series.ge :

In [1521]: dfy[dfy.groupby(['P_ID'])['ICULOS'].transform('count').ge(8)]
Out[1521]: 
    P_ID  ICULOS  Count
5      2       1      9
6      2       2      9
7      2       3      9
8      2       4      9
9      2       5      9
10     2       6      9
11     2       7      9
12     2       8      9
13     2       9      9

在OP的评论后编辑: 对于多种情况,请执行以下操作:

In [1533]: x = dfy.groupby(['P_ID'])['ICULOS'].transform('count')
In [1539]: dfy.loc[x[x.ge(8) & x.le(72)].index]
Out[1539]: 
    P_ID  ICULOS  Count
5      2       1      9
6      2       2      9
7      2       3      9
8      2       4      9
9      2       5      9
10     2       6      9
11     2       7      9
12     2       8      9
13     2       9      9
2 年前
回复了 Mayank Porwal 创建的主题 » 根据python中其他级别的条件替换多索引级别的列名

你可以用 list comprehension :

# Iterate the orig_dat columns, check if the last element is 'x', then create a new tuple with 2nd element as 'test', otherwise leave as is
In [321]: new_cols = [(i[0], 'test', i[-1]) if i[-1] == 'x' else i for i in orig_dat.columns ]

# Create a MultiIndex object from above list and assign it to columns of orig_dat
In [330]: orig_dat.columns = pd.MultiIndex.from_tuples(new_cols)

In [331]: orig_dat
Out[331]: 
    18 13 42   25
  test  b  c test
     x  y  z    x
0    0  2  3    4
1    0  2  3    4

编辑: 在OP的评论之后检查 x 其中包括:

In [338]: new_cols = [(i[0], 'test', i[-1]) if 'x' in i else i for i in orig_dat.columns]

In [330]: orig_dat.columns = pd.MultiIndex.from_tuples(new_cols)

In [331]: orig_dat
Out[331]: 
    18 13 42   25
  test  b  c test
     x  y  z    x
0    0  2  3    4
1    0  2  3    4
5 年前
回复了 Mayank Porwal 创建的主题 » 如何在mysql中显示每月前20个客户端名称?[副本]

首先,请务必用示例输入和预期输出来说明您的需求。而且,要非常精确地知道你想要什么。 例如,不清楚您希望在什么基础上(哪一列)使用顶级客户机名称。

所以,我正在构建一个通用查询,您应该替换 order by column 用你想要的实际列名。

Select c.user_id,c.client_name, u.month
FROM client c
JOIN user u
ON c.user_id = u.user_id
GROUP BY u.month
ORDER BY c.user_id
LIMIT 20;
5 年前
回复了 Mayank Porwal 创建的主题 » python与pandas(相同的索引,相同的列)合并后仍返回x和y列

所以,根据我的理解,你想更新 df1 df2 只为 Non-Null 价值观。

以下面的数据帧为例:

In [1761]: df1
Out[1761]: 
   val1  val2  val3
0   NaN   NaN  0.20
1   NaN   0.2   NaN
2   NaN   NaN  0.13
3   NaN  50.0  0.40

In [1762]: df2
Out[1762]: 
   val1   val2  val3
0    99   0.10   NaN
1    99    NaN  0.10
2    99    NaN  0.13
3    99  50.00  0.40

因此,在上述情况下,将发生以下更新:

1.)列的所有行 val1 属于 DF1 将由更新 Val1 属于 小精灵 作为 小精灵 具有此列的所有非空值。

2.)仅第一行用于列 val2 属于 DF1 将由更新 Val2 属于 小精灵 作为 小精灵 此列的第一行具有非空值。

3.)第二行仅用于列 val3 属于 DF1 将由更新 Val3 属于 小精灵 作为 小精灵 此列的第二行具有非空值。

注:第3行为col Val2 属于 DF1 不会更新,因为即使在 DF2 .

下面是执行上述操作的代码:

df1[~df1.notnull()] = df2[df2.notnull()]

现在, DF1 更新后如下所示:

In [1766]: df1
Out[1766]: 
   val1  val2  val3
0  99.0   0.1  0.20
1  99.0   0.2  0.10
2  99.0   NaN  0.13
3  99.0  50.0  0.40

我认为这解决了你的问题。