![](/img/trans.png)
[英]How can I modify a dataframe element from a Series defined through df.loc[row]?
[英]Using a series as input, how can I find rows with matching values in a pandas dataframe? e.g. df.loc[series]?
我有一个数据帧df
等一系列s
匹配列df
。 我想在df
中找到与s
具有相同值的所有行。 我可能应该提到列可以更改,但s
将始终是df
的一行。
df = pd.DataFrame.from_dict({'a': {0: 0.015, 1: 0.02, 2: 0.025, 3: 0.015},
'b': {0: True, 1: True, 2: True, 3: True},
'c': {0: 'foo', 1: 'foo', 2: 'foo', 3: 'foo'},
'd': {0: 1, 1: 1, 2: 1, 3: 1}})
s = df.loc[0]
在这种情况下的预期结果将是df.loc[[0,3]]
的返回值。 或者,匹配行的索引也可以。
当然,如果列每次都相同df.loc[df['a']==s['a'], df['b']==s['b'], ...]
会起作用正好。 也许有一种方法可以通过某种理解在df.loc[ ]
中生成术语?
我在想象必须有一种 pythonic/pandas 方式来做到这一点。
通过比较行DataFrame.eq
,然后测试,如果一切True
每行S按DataFrame.all
和最后一个过滤器boolean indexing
:
df = df[df.eq(s).all(axis=1)]
print (df)
a b c d
0 0.015 True foo 1
3 0.015 True foo 1
详情:
print (df.eq(s))
a b c d
0 True True True True
1 False True True True
2 False True True True
3 True True True True
print (df.eq(s).all(axis=1))
0 True
1 False
2 False
3 True
dtype: bool
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.