小编rdh*_*dh9的帖子

Pandas Groupby应用函数来计算大于零的值

Pandas Groupby应用函数来计算大于零的值

我以下列方式使用groupby和agg:

df.groupby('group')['a'].agg({'mean' : np.mean, 'std' : np.std})
Run Code Online (Sandbox Code Playgroud)

我想在同一列['a']中计算零以上的值

以下行按我的意愿计算,

sum(x > 0 for x in df['a'])
Run Code Online (Sandbox Code Playgroud)

但是在申请groupby时我无法正常工作.

下面是一个将pandas计算应用于groupby的示例,我试过:

df.groupby('group')['a'].apply(sum(x > 0 for x in df['a']))
Run Code Online (Sandbox Code Playgroud)

但是我收到一条错误消息:AttributeError:'numpy.int32'对象没有属性' module '

任何人都可以建议如何做到这一点?

python python-3.x pandas

10
推荐指数
1
解决办法
6755
查看次数

Pandas Dataframe CSV导出,如何防止其他双引号字符

我正在使用Pandas处理和输出在Wordpress中发布的表的数据

我正在添加HTML代码以格式化一列颜色

从示例Dataframe开始:

import numpy as np
import pandas as pd
df = pd.DataFrame({
                'A': ['group1', 'group2', 'group3'],
                'B': ['foo', 'foo', 'foo'] })
Run Code Online (Sandbox Code Playgroud)

打印df

        A    B
0  group1  foo
1  group2  foo
2  group3  foo
Run Code Online (Sandbox Code Playgroud)

然后我将相同的格式代码添加到每一行,如下所示:

df['Status'] = '<span style="color: #00CD00">Active</span>'

print df    

        A    B                                      Status
0  group1  foo  <span style="color: #00CD00">Active</span>
1  group2  foo  <span style="color: #00CD00">Active</span>
2  group3  foo  <span style="color: #00CD00">Active</span>
Run Code Online (Sandbox Code Playgroud)

我将数据导出为csv文件,因为我需要逗号分隔符:

output = r'C:\test\test.csv'
df.to_csv(output, index=False)
Run Code Online (Sandbox Code Playgroud)

如果我在Excel中打开csv,它看起来与上面完全一样

但是如果我在文本编辑器中打开它(我需要做的是获取分隔符),我发现带有格式化字符串的列有另外的双引号字符,如下所示:

"<span style=""color: #00CD00"">Active</span>"
Run Code Online (Sandbox Code Playgroud)

- 这没有添加双引号 - 这是正确的:

<span …
Run Code Online (Sandbox Code Playgroud)

python csv pandas

7
推荐指数
1
解决办法
7489
查看次数

如何使用路径字符串的基本部分提取子字符串

有几个关于字符串操作的问题,但我找不到允许我执行以下操作的答案——我认为它应该很简单......

我有一个 DataFrame,其中包含一个包含文件名和路径的列

下面生成一个具有代表性的示例 DataFrame:

index = ['1']
columns=['root']
df = pd.DataFrame(index=index,columns=columns)
path = 'C:\\folder1\\folder2\\folder3\\folder4\\filename.csv'
df['root']=path
df

Out[89]:
root
C:\folder1\folder2\folder3\folder4\filename.csv 
1 rows × 1 columns
Run Code Online (Sandbox Code Playgroud)

我只想得到字符串的“文件名”部分。行数多,路径不固定,不能用str.replace

我可以像这样去掉最右边的“.csv”部分:

df['root'] = df['root'].str.rstrip('.csv')    
df


Out[90]:
root
C:\folder1\folder2\folder3\folder4\filename 
1 rows × 1 columns
Run Code Online (Sandbox Code Playgroud)

- 但我无法使用我读过的任何方法来删除字符串左侧的路径部分。

鉴于路径的前面元素可以从记录更改为记录,我如何仅返回此路径(字符串)的“文件名”部分?

有人有建议吗?非常感谢任何帮助。

python string path-manipulation pandas os.path

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

熊猫聚合-如何保留所有列

示例数据框:

rand = np.random.RandomState(1)
df = pd.DataFrame({'A': ['group1', 'group2', 'group3'] * 2,
                'B': rand.rand(6),
                'C': rand.rand(6),
                'D': rand.rand(6)})
Run Code Online (Sandbox Code Playgroud)

打印df

        A         B         C         D
0  group1  0.417022  0.186260  0.204452
1  group2  0.720324  0.345561  0.878117
2  group3  0.000114  0.396767  0.027388
3  group1  0.302333  0.538817  0.670468
4  group2  0.146756  0.419195  0.417305
5  group3  0.092339  0.685220  0.558690
Run Code Online (Sandbox Code Playgroud)

分组依据A列

group = df.groupby('A')
Run Code Online (Sandbox Code Playgroud)

使用agg返回每个组的最大值

max1 = group['B'].agg({'max' : np.max})
print max1

             max
A               
group1  0.417022
group2  0.720324
group3  0.092339
Run Code Online (Sandbox Code Playgroud)

但是我想保留(或取回)其他列C和D中的适当数据。这将是包含最大值的行的剩余数据。因此,返回值应为:

     A         B         C         D
group1  0.417022 …
Run Code Online (Sandbox Code Playgroud)

python aggregate pandas

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