小编pos*_*ist的帖子

将 pandas 数据框中的所有 inf、-inf 值替换为 NaN

我有一个大型数据框,不同列中包含 inf、-inf 值。我想用 NaN 替换所有 inf、-inf 值

我可以逐栏这样做。所以这有效:

df['column name'] = df['column name'].replace(np.inf, np.nan)
Run Code Online (Sandbox Code Playgroud)

但我的代码在数据帧中一次性执行此操作却没有。

df.replace([np.inf, -np.inf], np.nan)
Run Code Online (Sandbox Code Playgroud)

输出不会替换 inf 值

replace find inf dataframe pandas

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

使用 Groupby 计算两列的总计百分比

我有一个数据框:

df = pd.DataFrame({
    'Product': ['AA', 'AA', 'AA', 'AA', 'BB', 'BB', 'BB', 'BB'],
    'Type': ['AC', 'AC', 'AD', 'AD', 'BC', 'BC', 'BD', 'BD'],
    'Sales': [ 200, 100, 400, 100, 300, 100, 200, 500], 
    'Qty': [ 5, 3, 3, 6, 4, 7, 4, 1]})
Run Code Online (Sandbox Code Playgroud)

我想尝试获取“销售”和“数量”的“产品”和“类型”的总数百分比。我可以分别获取“销售额”和“数量”占总数的百分比。但我想知道是否有办法对两个专栏都这样做。

要获取一列的总计百分比,代码为:

df['Sales'] = df['Sales'].astype(float)
df['Qty'] = df['Qty'].astype(float)
df = df[['Product', 'Type', 'Sales']]

df = df.groupby(['Product', 'Type']).agg({'Sales': 'sum'})
pcts = df.groupby(level= [0]).apply(lambda x: 100 * x / float(x.sum()))
Run Code Online (Sandbox Code Playgroud)

有没有办法一次性获得两个列的这个?

python dataframe pandas pandas-groupby

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

创建 pandas 数据框中列的唯一值的字典

我有一个数据框:

import pandas as pd
df = pd.DataFrame({ 
'ID': ['ABC', 'ABC', 'ABC', 'XYZ', 'XYZ', 'XYZ'], 
'value': [100, 120, 130, 200, 190, 210],
'value2': [2100, 2120, 2130, 2200, 2190, 2210],   
'state': ['init','mid', 'final', 'init', 'mid', 'final'], 
})
Run Code Online (Sandbox Code Playgroud)

我想创建列“ID”的唯一值的字典。我可以通过以下方式提取唯一值:

df.ID.unique()
Run Code Online (Sandbox Code Playgroud)

但这给了我一个清单。我希望输出是一个字典,如下所示:

dict = {0:'ABC', 1: 'XYZ'}
Run Code Online (Sandbox Code Playgroud)

如果列中唯一条目的数量为 n,则键应从 0 开始,直到 n-1。这些值应该是列中唯一条目的名称

实际的数据帧有 1000 行并且经常更新。所以我无法手动维护字典。

python dictionary pandas

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

标签 统计

pandas ×3

dataframe ×2

python ×2

dictionary ×1

find ×1

inf ×1

pandas-groupby ×1

replace ×1