如何在特定条件下过滤熊猫数据框中的列值?

阿拉法

我创建了一个 Pandas 数据框并想过滤一些值。数据框即包含 4 列currency port supplier_id value,我希望拥有能够满足下面提供的条件的值,

* port – expressed as a portcode, a 5-letter string uniquely identifying a port. Portcodes consist of 2-letter country code and 3-letter city code.
* supplier_id - integer, uniquely identifying the provider of the information
* currency - 3-letter string identifying the currency
* value - a floating-point number

df =  df[ (len(df['port']) == 5 & isinstance(df['port'], basestring)) & \
  isinstance(df['supplier_id'], int) & \
  (len(df['currency']) == 3 & isinstance(df['currency'], basestring))\
  isinstance(df['value'], float) ]

代码片段应该很明显,并试图实现前面提到的条件,但它不起作用。df下面提供了印刷品

     currency   port  supplier_id   value
0         CNY  CNAQG         35.0   820.0
1         CNY  CNAQG         19.0   835.0
2         CNY  CNAQG         49.0   600.0
3         CNY  CNAQG         54.0   775.0
4         CNY  CNAQG        113.0   785.0
5         CNY  CNAQG          5.0   790.0
6         CNY  CNAQG         55.0   770.0
7         CNY  CNAQG         81.0   810.0
8         CNY  CNAQG          2.0   770.0
9         CNY  CNAQG         10.0   825.0


print df[df.supplier_id.isnull()] # prints below 
Empty DataFrame
Columns: [currency, port, supplier_id, value]
Index: []



df.info() # prints below     
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6661 entries, 0 to 6660
Data columns (total 4 columns):
currency       6661 non-null object
port           6661 non-null object
supplier_id    6661 non-null float64
value          6661 non-null float64
dtypes: float64(2), object(2)
memory usage: 208.2+ KB
None

怎么写才合适?

耶斯列

如果在一列中有混合值,您可以使用 - 数字与字符串:

df = pd.DataFrame({'port':['aa789',2,3],
                   'supplier_id':[4,'s',6],
                   'currency':['USD',8,9],
                   'value':[1.7,3,5]})

print (df)
  currency   port supplier_id  value
0      USD  aa789           4    1.7
1        8      2           s    3.0
2        9      3           6    5.0

#for python 2 change str to basestring
m1 = (df.port.astype(str).str.len() == 5) & (df.port.apply(lambda x :isinstance(x, str)))
m2 = df.supplier_id.apply(lambda x : isinstance(x, int))
m3=(df.currency.astype(str).str.len() == 3)&(df.currency.apply(lambda x :isinstance(x, str)))
m4 = df.value.apply(lambda x : isinstance(x, float))
mask = m1 & m2 & m3 & m4
print (mask)
0     True
1    False
2    False
dtype: bool

print (df[mask])
  currency   port supplier_id  value
0      USD  aa789           4    1.7

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不同条件下过滤熊猫数据框

如何在特定条件下过滤并在熊猫中同时应用一个函数

如何在我的特定条件下在数据框中添加列?

在特定条件下填充熊猫数据框列

在多种条件下过滤熊猫数据框

如何在熊猫数据框中以特定条件分组

在熊猫数据框中的特定条件下删除值

如何在特定条件下在熊猫数据框行中找到增量

在多种条件下过滤数据框

在熊猫中过滤基于特定条件的数据框

如何在多个条件下过滤数据帧?

如何在一栏条件下过滤数据?

如何通过在pyspark中的特定条件下添加列来丰富数据框?

如何在ORACLE中累积特定列并在特定条件下释放值

特定条件下的熊猫数据框

给定特定条件时,通过用户定义的函数在熊猫数据框的列中输入值

在特定条件下如何获取熊猫数据框的笛卡尔积

如何在熊猫中具有特定条件的列名放入数据框单元格

如何在熊猫数据框中设置重新采样的特定条件?

如何在符合特定条件的数据框中找到最小值并返回特定列

如何根据特定条件在数据框熊猫中的列上添加一列

在多个条件下过滤数据框索引

在特定条件下汇总数据框中的行值

如何在数据框的特定条件下将对与错替换为数值

如何在数据框的特定条件下提取某些行(Python)?

如何在特定条件下循环进入数据框?

如何通过在特定条件下添加列来丰富数据框?

当列值符合特定条件时,在熊猫数据框的行中提取2列数据

如何在Python的Multiindex列中串联满足特定条件的Pandas数据框