小编yoo*_*ghm的帖子

具有用户定义函数Pandas的Groupby

我知道将函数作为组键传递每个索引值调用一次函数,返回值用作组名.我无法弄清楚的是如何在列值上调用函数.

所以我可以这样做:

people = pd.DataFrame(np.random.randn(5, 5), 
                      columns=['a', 'b', 'c', 'd', 'e'],
                      index=['Joe', 'Steve', 'Wes', 'Jim', 'Travis'])
def GroupFunc(x):
    if len(x) > 3:
        return 'Group1'
    else:
        return 'Group2'

people.groupby(GroupFunc).sum()
Run Code Online (Sandbox Code Playgroud)

这将数据分成两组,其中一组的索引值为3或更小,另一组的长度为3或更多.但是我如何传递其中一个列值?因此,例如,如果每个索引点的列d值大于1.我意识到我可以执行以下操作:

people.groupby(people.a > 1).sum()
Run Code Online (Sandbox Code Playgroud)

但我想知道如何在用户定义的函数中执行此操作以供将来参考.

就像是:

def GroupColFunc(x):
if x > 1:
    return 'Group1'
else:
    return 'Group2'
Run Code Online (Sandbox Code Playgroud)

但我怎么称呼这个?我试过了

people.groupby(GroupColFunc(people.a))
Run Code Online (Sandbox Code Playgroud)

和类似的变体,但这不起作用.

如何将列值传递给函数?我如何传递多个列值,例如分组是否people.a> people.b?

python pandas

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

python pandas pivot_table在一列中计算频率

我仍然是Python pandas的pivot_table的新手,想要问一种计算一列中值的频率的方法,该列也链接到另一列ID.DataFrame如下所示.

import pandas as pd
df = pd.DataFrame({'Account_number':[1,1,2,2,2,3,3],
                   'Product':['A', 'A', 'A', 'B', 'B','A', 'B']
                  })
Run Code Online (Sandbox Code Playgroud)

对于输出,我想得到如下内容:

                Product
                A      B
Account_number           
      1         2      0
      2         1      2
      3         1      1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试了这段代码:

df.pivot_table(rows = 'Account_number', cols= 'Product', aggfunc='count')
Run Code Online (Sandbox Code Playgroud)

这段代码给了我两个相同的东西.上面的代码有什么问题?我问这个问题的部分原因是这个DataFrame只是一个例子.我正在处理的真实数据有数万个account_numbers.感谢您的帮助!

python pandas

17
推荐指数
3
解决办法
3万
查看次数

无法在 Visual Studio Code 中调试 Rust?

我尝试在 VS Code 中调试 Rust 程序,但收到错误: https://i.stack.imgur.com/QapPo.png

单击确定后,VS Code 打开“settings.json”: https://i.stack.imgur.com/X17Ss.png

我安装了这些扩展:

https://i.stack.imgur.com/HPpZ6.png

我的程序是一个简单的“hello world”应用程序。

visual-studio-2010 rust visual-studio-code

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

Python数据帧中的置信区间

我正在尝试计算大型数据集中“力”列的均值和置信区间(95%)。我需要通过对不同的“类”进行分组来使用 groupby 函数的结果。

当我计算平均值并将其放入新数据框中时,它为我提供了所有行的 NaN 值。我不确定我是否走正确的路。有没有更简单的方法来做到这一点?

这是示例数据框:

df=pd.DataFrame({ 'Class': ['A1','A1','A1','A2','A3','A3'], 
                  'Force': [50,150,100,120,140,160] },
                   columns=['Class', 'Force'])
Run Code Online (Sandbox Code Playgroud)

为了计算置信区间,我做的第一步是计算平均值。这是我使用的:

F1_Mean = df.groupby(['Class'])['Force'].mean()
Run Code Online (Sandbox Code Playgroud)

这给了我NaN所有行的值。

python confidence-interval pandas

8
推荐指数
2
解决办法
2万
查看次数

熊猫数据透视表上的行总和

我一直在试图弄清楚如何将行总和添加到 Pandas 数据透视表。请有人帮我指出正确的方向。

这是我下面的代码。

x.pivot_table(index = ["am","spot_or_contract"],
              columns = "status",
              values = "shipment_id",
              aggfunc = "count").fillna('')
Run Code Online (Sandbox Code Playgroud)

非常感谢您提前

python pandas jupyter-notebook

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

Pandas Pivot_Table:非数字值的行计算百分比

这是数据框"df"中的数据:

Document    Name    Time
SPS2315511  A   1 HOUR
SPS2315512  B   1 - 2 HOUR
SPS2315513  C   2 - 3 HOUR
SPS2315514  C   1 HOUR
SPS2315515  B   1 HOUR
SPS2315516  A   2 - 3 HOUR
SPS2315517  A   1 - 2 HOUR
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码,它给出了数据透视表中计数的摘要,

table = pivot_table(df, values=["Document"],
                    index=["Name"], columns=["Time"],
                    aggfunc=lambda x: len(x),
                    margins=True, dropna=True)
Run Code Online (Sandbox Code Playgroud)

但我想要的是在右键单击数据透视表并选择"显示值为 - >行总计百分比"时的行计算百分比.由于我的文档是非数字值,我无法得到它.

预期结果 :

Count of Document   Column Labels

Name    1 HOUR  1 - 2 HOUR  2 - 3 HOUR  Grand Total
A   33.33%  33.33%  33.33%  100.00% …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

在使用熊猫iterrows()时追加新行?

我在创建df['var'2]和更改下面的代码df['var1']。执行完这些更改后,我想将newrow(with df['var'2])附加到数据框,同时保留原始(尽管现在已更改)行(具有df['var1'])。

for i, row in df.iterrows():
    while row['var1'] > 30: 
        newrow = row
        newrow['var2'] = 30
        row['var1'] = row['var1']-30
        df.append(newrow)
Run Code Online (Sandbox Code Playgroud)

我知道使用时iterrows(),行变量是副本而不是视图,这就是为什么更改未在原始数据框中更新的原因。因此,我将如何更改此代码以实际将newrow追加到数据框?

谢谢!

python append pandas

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