![](/img/trans.png)
[英]How to eliminate the index value of columns and rows in a python dataframe?
[英]How to select dataframe rows based on index value and columns value criteria?
我有一個 dataframe,它是n=9
數據幀的堆疊版本:
df
f a config
0 0.491 0.368 old.000
1 0.369 0.333 old.000
2 0.372 0.276 old.000
3 0.346 0.300 old.000
4 0.213 0.161 old.000
.. ... ... ...
212 1.000 1.000 fin.111
213 1.000 1.000 fin.111
214 1.000 1.000 fin.111
215 1.000 1.000 fin.111
216 1.000 1.000 fin.111
[1953 rows x 3 columns]
每個“堆疊”子數據幀對應於不同的config
值,即:
df['config'].unique()
array(['old.000', 'fin.000', 'fin.001', 'fin.010', 'fin.011', 'fin.100',
'fin.101', 'fin.110', 'fin.111'], dtype=object)
我想通過 pd.Series 給出的標准(由index
和config
值組成)“過濾”這個 dataframe:
ser_criteria
0 old.001
1 fin.101
2 fin.100
3 fin.101
4 fin.101
...
212 fin.000
213 old.000
214 old.000
215 old.000
216 old.000
Length: 217, dtype: object
因此,我需要通過以下方式提供我的 output:
df_filtered
f a config
0 0.481 0.368 old.001
1 0.569 0.333 fin.101
2 0.672 0.276 fin.100
3 0.378 0.111 fin.101
4 0.987 0.213 fin.101
.. ... ... ...
212 0.500 0.111 fin.000
213 1.000 1.000 old.000
214 0.765 0.123 old.000
215 0.000 1.000 old.000
216 0.333 0.123 old.000
[217 rows x 3 columns]
更有效的方法是什么? 我能找到的唯一方法是逐個元素(從索引)執行此操作...
將index
轉換為兩個 DataFrame 中的index
列並使用右連接:
df = (ser_criteria.rename('config')
.reset_index()
.merge(df.reset_index(), on=['index','config'],how='right')
.drop('index', axis=1))
如果過濾條件中的索引值不重要,您可以執行以下操作:
import pandas as pd
# Assign your dataframe to df (example)
df = pd.read_csv("Documents/dataframe.tsv", sep="\t")
df
f a config
0 0.491 0.368 old.000
1 0.369 0.333 old.000
2 0.372 0.276 old.000
3 0.346 0.300 old.000
4 0.213 0.161 old.000
212 1.000 1.000 fin.111
213 1.000 1.000 fin.111
214 1.000 1.000 fin.111
215 1.000 1.000 fin.111
216 1.000 1.000 fin.111
# Assign your filter series to filter (example)
filter = pd.Series(('old.001', 'fin.101', 'fin.100', 'fin.101', 'fin.101', 'fin.000', 'old.000', 'old.000', 'old.000', 'old.000'))
filter
0 old.001
1 fin.101
2 fin.100
3 fin.101
4 fin.101
5 fin.000
6 old.000
7 old.000
8 old.000
9 old.000
dtype: object
# Then subset the dataframe by which rows have a config value in your filter
df[df['config'].isin(filter)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.