根据给定条件过滤数据框并添加新列

我有一个这样的数据框 ID col1 col2 Abc 街 1 号 2017-07-27 1 无 2017-08-17 2018-07-15 Def 街 1 号 1 无 2018-08-13 月 fbg 街 2018-01-07 2 无 2018-08-12 2019-01-15 号 trf 街 2 号 我想过滤 col1 中的所有 “无”,并将相应的 col2 值添加到新的列 col3 中。我的输出是这样的 ID col1 col2 col3 1 Abc 街 2017-07-27 2017-08-17 1 Def 街 2018-07-15 2018-08-13 月 fbg 街 2018-01-07 2018-08-12 2019-01-15 号 trf 街 2 号 有人能帮我实现这个目标吗? ……

共5个回答, 标签: python python-3.x pandas numpy pandas-groupby
动态列名的 Pandas 聚合

我有一个脚本,它用不同数量的值列生成一个 pandas 数据框。例如,这个 df 可能是 进口熊猫作为 pd 数据框 ({) “组”: [“a” 、 “b”, “Group _ color”: [“green” 、 “blue”] 、 'Val1': [5,2,3,4,5], 【 4 、 2 、 8 、 5 、 7 】 }) 组组 _ 颜色 val1 val2 5 个 4 个 1 个绿色 2 个 2 个绿色 3 个 8 个 3 B 蓝 4 5 4 B 蓝 5 7 我的目标是获得每个值列的分组平均值。在这种特殊情况下 (有两个值列),我可以使用 Df.Group by ('group').agg ({“group _ color”: “first” 、 “val1”: “mean” 、 “val2”: “mean Val1 val2 组 _ 颜色 组 绿色 3.333333 4.666667 B 蓝 4.500000 6.000000 但是,当所讨论的数据框具有更多的值列 (val3 、 val4 等) 时,这并不起作用。).有没有办法动态取 “所有其他列” 或 “名称中包含 val 的所有列” ……

共5个回答,已解决, 标签: python pandas aggregate pandas-groupby
如果我使用 pandas 为同一项目同时具有 True 和 False 行,则获取 True 行。

我有一个数据框与这些数据。 将熊猫作为 pd 导入 Data = {'item': ['2','1','2'], “可用”: [“真” 、 “假”]} Df = pd.DataFrame (数据) ================================ 项目 | 可用 --------------------- 2 | 真 1 | False 2 | 假 在数据帧中,我有如上所示的数据。正如你所看到的,我对项目 2 既有真也有假。在这种情况下,我想要一个只有真的记录。 预期输出: 项目 | 可用 --------------------- 2 | 真 1 | False 请帮助编写使用 python pandas 的条件。 谢谢 ……

共4个回答, 标签: python pandas pandas-groupby
如何平滑和绘制 x 与 y 加权平均数, 加权 x?

我有一个数据框, 其中包含一列权重和一个值。我需要: * 离散权重, 并为每个权重间隔绘制值的加权平均值, 然后 * 将相同的逻辑扩展到另一个变量: 离散 z, 并为每个间隔绘制值的加权平均值, 按权重加权 是否有一个简单的方法来实现这一点?我已经找到了一个方法, 但它似乎有点麻烦: * 我用熊猫离散数据框。 * 做一个小组和计算加权平均 * 绘制每个纸盒的平均值与加权平均数 * 我也试图用样条来平滑曲线, 但它没有做太多 基本上, 我正在寻找一个更好的方法来产生一个更平滑的曲线。 我的输出如下所示:enter image description here [https://i.stack.imgur.com/FRVSu.png] [https://i.stack.imgur.com/FRVSu.png] 我的代码, 一些随机数据, 是: import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from scipy.interpolate import m ……

熊猫转换列表的不一致行为

我有样品片段,按预期工作: 进口熊猫作为 pd Df = pd。 dataFrame (数据 = {'label': ['a','b','b','c'],'wave': [1,2,3,4],'y': [0,0,0,0]}) Df ['new'] = df.groupby (['label']) [['wave']]。变换 (元组) 结果是: 标签波 y 新 0 一 1 一 0 (1,) 1 b 2 0 (2,3) 2 b 3 0 (2,3) 3 c 4 0 (4,) 它适用于 analagously,如果不是tuple in transform I give set, frozenset, dict, but if I give list我得到了完全意想不到的结果: Df ['new'] = df.groupby (['label']) [['wave']]。变换 (列表) 标签波 y 新 0 一 1 1 b 2 0 2 2 b 3 0 3 3 c 4 0 0 4 有一个解决方法来获得预期的结果: Df ['new'] = df.groupby (['label']) [['wave' ……

共3个回答, 标签: python pandas transform pandas-groupby