数据框列数据 - 熊猫 - python

Posted

技术标签:

【中文标题】数据框列数据 - 熊猫 - python【英文标题】:Dataframe column data - pandas - python 【发布时间】:2016-07-27 16:40:37 【问题描述】:

我有一个数据框,我试图在其中查看“#Inc”列以查看是否有数字 4。如果有,我想打印整行。我该怎么做?

我试过这个但失败了(错误是 --> 只允许将类似对象的列表传递给 isin(),你传递了一个 int):

if df.loc[df['#Inc'].isin(4)] is true:
    print 'WIN'

else:
    print 'FAILURE!'

这是输出:

输出:

月平均公司#Inc Avg.Dec #Dec

0 月 0.091454 1 0.000000 0

2 月 1 日 0.008307 1 -0.030809 1

2 三月 0.000000 0 -0.027193 2

4 月 3 日 0.008845 1 -0.035857 1

5 月 4 日 0.000000 0 -0.076321 2

6 月 5 日 0.033715 1 -0.025242 1

7 月 6 日 0.016775 1 -0.028849 1

8 月 7 日 0.079845 1 -0.033116 1

8 SEP 0.000000 0 -0.042201 2

9 OCT 0.044914 1 -0.049798 1

11 月 10 日 0.000000 0 -0.148163 2

11 月 11 日 0.039241 1 -0.024030 1

【问题讨论】:

【参考方案1】:

认为你想要一些简单的东西,如下所示:

df = pd.DataFrame('#Inc': [1,2,3,4,5], 'another_col': ['x','y','z','a','b'])    
for _, row in df.iterrows():
    if row['#Inc'] == 4:
        print(row)

上面发生的事情是我们使用iterrows 创建的生成器循环遍历数据框中的所有行,然后在行中的特定键等于您要查找的值时打印。

【讨论】:

将它的行解包为一个系列,然后比较每个元素并不是很有效。 ***.com/a/10739432/492620【参考方案2】:

如果你在 shell(IPython 或普通 Python shell)中工作,你可以简单地应用你想要的过滤器而不分配结果:

In [27]: df[df[' #Inc'] == 4]
Out[27]: 
  Month   Avg Inc.   #Inc   Avg.Dec   #Dec
1   FEB   0.008307      4 -0.030809      1
3   APR   0.008845      4 -0.035857      1

您可以分配过滤器的结果以供以后使用:

In [35]: interesting_results = df[df[' #Inc'] == 4]

【讨论】:

【参考方案3】:

错误是因为方法 isin() 不接受单个字符串、int、float 值作为输入参数。

0.18.x、0.19.x 版本的 Pandas 文档提到了 iterable、pandas 数据帧、系列或字典类型的输入参数作为方法 isin() 的输入参数。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.isin.html

0.17.x 版本的熊猫 方法 isin() 的文档说它将输入值作为列表,即使您有单个字符串然后将该字符串添加到列表中,然后调用 isin() 方法。 http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.Series.isin.html.

我希望这会有所帮助。 干杯!!

【讨论】:

以上是关于数据框列数据 - 熊猫 - python的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中迭代列表和添加熊猫数据框列非常慢

熊猫将数据框列写入 csv

根据单词是不是大写拆分熊猫数据框列

爆炸熊猫数据框列

如何迭代熊猫数据框列中的元素?

熊猫地图数据框列