データフレーム関連の問題に苦しんでいます。以下のように、dfとdffの2つのデータフレームがあります。
data = np.array([['', 'col1', 'col2'],
['row1', 1, 2],
['row2', 3, 4]])
df = pd.DataFrame(data=data[1:,1:].astype(int), index=data[1:,0],columns=data[0,1:])
filters=np.array([['', 'col1', 'col2'],
['row1', 1, 1],
['row2', 1, 2],
['row3', 3, 2]])
dff = pd.DataFrame(data=filters[1:,1:].astype(int), index=filters[1:,0],columns=filters[0,1:])
col2値が一致するcol1値を持つdffで見つけることができる値のリストに属するように、dfから行を選択したいと思います。たとえば、col1値が1の場合、そのリストは[1、2]である必要があり、col1値が2の場合、リストは[2]です。
これを解決するための私の最善の試みは
df1 = df[df['col2'].isin(dff[dff['col1']==df['col1']]['col2'])]
しかし、その結果
ValueError: Can only compare identically-labeled Series objects
どんな助けでもいただければ幸いです。本当にありがとう。
私が理解している限り、あなたは簡単にできます aggregate
ndf = dff.groupby('col1').agg(lambda x: list(x)).reset_index()
col1 col2
0 1 [1, 2]
1 3 [2]
にcol1
ない値をフィルタリングしますdf
ndf[ndf.col1.isin(df.col1)]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加