数据框列数据 - 熊猫 - 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的主要内容,如果未能解决你的问题,请参考以下文章