【问题标题】:How to do the following command in Pandas如何在 Pandas 中执行以下命令
【发布时间】:2016-01-05 21:48:19
【问题描述】:

我的桌子:

Series  Valve  Poles  Wires
1       2      3      4
1       nan    z      3
1       2      3      4
2       q      e      z
2       b      4      nan
3       nan    2      a
4       1      2      3
4       nan    4      5
5       nan    2      1
5       1      2      nan

我想应用以下规则:

  • 不要显示或选择满足所有列值的行。
  • 例如:对于列系列,我们有一行包含所有三个值。所以我们应该保留 Column Series 等于 1 的行,因为有一行包含所有三个值。
  • 显示或选择列系列,其中任何行中的所有三个值均未满足。

我想要输出 1: 满足上述条件。 所以输出将是数组中的系列 3 和系列 5。 剩下的就是第二个输出。

我首先打印的是 Null 值行:

Bank_Det_Null = Bank_Det[Bank_Det.isnull().any(axis=1)]

然后我在此处保存系列或 LIFNER:

Bank_Det_Null_LIFNR = Bank_Det_Null[['LIFNR']].values.ravel()

然后我再次传递这些值以查看该行:

df_LFBK.loc[df_LFBK.LIFNR.isin(Bank_Det_Null_LIFNR)].head()

但我仍然没有得到我想要的。

【问题讨论】:

  • 你能不能展示一下你的努力,SO不是代码编写服务
  • 请同时添加预期输出。
  • @Fabio 我已经添加了我写的内容。
  • @EdChum 我已经付出了努力,请看这里我只是无法做我想做的事,这就是我在这里发布的原因。
  • 我只想要一个值为 3 和 5 的数组。

标签: python python-2.7 pandas


【解决方案1】:

您可以在“系列”上groupby,根据您的情况filter

In [121]:
df.groupby('Series').filter(lambda x: (x.isnull().any(axis=1)).all())

Out[121]:
   Series Valve Poles Wires
5       3   NaN     2     a
8       5   NaN     2     1
9       5     1     2   NaN

【讨论】:

  • 但是@EdChum 我希望Series 5 只显示一次。有没有可能
  • 你必须定义调用drop_duplicates(subset='Series')的原因和原因
  • 感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多