小编3no*_*vak的帖子

Pandas transform()vs apply()

我不明白为什么applytransform在同一数据帧上调用时返回不同的dtypes.我之前解释这两个函数的方式是" apply折叠数据,transform完全相同apply但保留原始索引并且不会崩溃".考虑以下.

df = pd.DataFrame({'id': [1,1,1,2,2,2,2,3,3,4],
                   'cat': [1,1,0,0,1,0,0,0,0,1]})
Run Code Online (Sandbox Code Playgroud)

让我们识别那些idcat列中具有非零条目的s .

>>> df.groupby('id')['cat'].apply(lambda x: (x == 1).any())
id
1     True
2     True
3    False
4     True
Name: cat, dtype: bool
Run Code Online (Sandbox Code Playgroud)

大.但是,如果我们想创建一个指标列,我们可以执行以下操作.

>>> df.groupby('id')['cat'].transform(lambda x: (x == 1).any())
0    1
1    1
2    1
3    1
4    1
5    1
6    1
7    0
8    0
9    1
Name: cat, dtype: int64
Run Code Online (Sandbox Code Playgroud)

我不明白为什么dtype现在int64而不是any()函数返回的布尔值.

当我将原始数据框更改为包含一些布尔值时(注意零保持不变),转换方法会在object …

python transform apply pandas

14
推荐指数
2
解决办法
5582
查看次数

Pandas分组在一列上,另一列python上有最大日期

我有一个包含以下数据的数据框:

invoice_no  dealer  billing_change_previous_month        date
       110       1                              0  2016-12-31
       100       1                         -41981  2017-01-30
      5505       2                              0  2017-01-30
      5635       2                          58730  2016-12-31
Run Code Online (Sandbox Code Playgroud)

我想只有一个拥有最长日期的经销商.所需的输出应该是这样的:

invoice_no  dealer  billing_change_previous_month        date
       100       1                         -41981  2017-01-30
      5505       2                              0  2017-01-30
Run Code Online (Sandbox Code Playgroud)

每个经销商应该与最大日期不同,提前感谢您的帮助.

python-2.7 pandas

11
推荐指数
2
解决办法
4886
查看次数

如何替换pandas Dataframe中的非整数值?

我有一个由两列组成的数据框,Age和Salary

Age   Salary
21    25000
22    30000
22    Fresher
23    2,50,000
24    25 LPA
35    400000
45    10,00,000
Run Code Online (Sandbox Code Playgroud)

如何处理Salary列中的异常值并用整数替换它们?

python dataframe pandas

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

3SUM(在等于0的列表中查找所有唯一三元组)

我正在研究3SUM问题(来自leetcode),该问题将一个列表作为输入,并在列表中找到所有唯一的三元组,使得a + b + c = 0。我不太确定我的代码在做什么错,但是当前它为此列表返回一个空列表[-1,0,1,2,-1,-4],因此它无法识别任何总计为0的三元组我将不胜感激任何建议或改进的代码。

这是我的代码:

result = []
nums.sort()
l = 0
r=len(nums)-1
for i in range(len(nums)-2):
    while (l < r):
        sum = nums[i] + nums[l] + nums[r]
        if (sum < 0):
            l = l + 1
        if (sum > 0):
            r = r - 1
        if (sum == 0): 
            result.append([nums[i],nums[l],nums[r]])
print(result)
Run Code Online (Sandbox Code Playgroud)

python list

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

标签 统计

pandas ×3

python ×3

apply ×1

dataframe ×1

list ×1

python-2.7 ×1

transform ×1