【问题标题】:Create a dictionary based on conditions for a pandas dataframe根据熊猫数据框的条件创建字典
【发布时间】:2019-10-20 22:20:00
【问题描述】:

假设我有简单的数据框,例如:

data = {'Col_A' : [0.75, 0.25, 0.25, 0.75, 0.75, 0.25], 'Col_B' : [2, 2.5, 1, 1.5, 3, 3.5]}
df = pd.DataFrame(data)

结果如下:

   Col_A  Col_B
0   0.75    2.0
1   0.25    2.5
2   0.25    1.0
3   0.75    1.5
4   0.75    3.0
5   0.25    3.5

我想做的是对Col_ACol_B 使用条件并遍历每一行,如果两者都匹配条件,我想将该行添加到字典中。

假设Col_A < 0.5Col_B > 2 我想用Col_B 附加一个字典,它是适当的值。

在上述情况下,我希望字典返回为 {'Col_B : 3.0, 'Col_B' : 2.5} 我知道Col_B 在这里重复,但我有很多列和很多行的df,我基本上是想了解一些事情中发生的频率。

我希望能够使用的代码是这样的:

dict['Col_B'] = np.where((df['Col_A'] < 0.5) and (df['Col_B'] > 1.5), df['Col_B'])

显然我知道这行不通,但这是我的想法。任何帮助都会非常高兴。

【问题讨论】:

  • 首先,{'Col_B : 3.0, 'Col_B' : 2.5} 不起作用,因为键是相同的,你可以期待像 {'Col_B': [3.0, 2.5]}

标签: python numpy dataframe dictionary


【解决方案1】:

您想根据 Col_A 和 Col_B 的条件从 Col_B 中获取值吗?你可以这样做:

# identify rows with matching conditions
idx = (df.Col_A < 0.5) & (df.Col_B > 2)

# put values from Col_B into your dictionary
dict["Col_B"] = list(df.loc[idx, "Col_B"])

这每次都会覆盖字典中的“Col_B”,但如果需要,您可以修改它以追加(我不确定您想在这里实现什么,所以我不知道您的应用程序是否需要追加) .

你说

我基本上是想了解某件事在几件事中发生的频率

如果只想统计 Col_A 2 的实例,只需拉取大小

numEvents = df.loc[idx, "Col_B"].size

【讨论】:

  • 这实际上是一个非常有用的答案,谢谢队友
猜你喜欢
  • 1970-01-01
  • 2016-01-14
  • 2014-11-22
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多