根据熊猫数据框的条件创建字典

时间:2019-06-05 11:49:10

标签: python numpy dataframe dictionary

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

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'])

很明显,我知道这行不通,但这是我在想的那种。任何帮助都将为他们加油。

1 个答案:

答案 0 :(得分: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 <0.5和Col_B> 2的实例,只需拉一下大小

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