1
ワイルドカード一般的に、ここでワイルドカードに基づいてパンダのデータフレームに参加するには?
import pandas as pd
data = [[".",".",1],["AB.","B.",3],["B.",".",2]]
data2 = [["A","B","1"],["ABC","BC",4],["B","A",2]]
columns = ["Type1","Type2","Value"]
df = pd.DataFrame(data,columns=columns)
df2 = pd.DataFrame(data2,columns=columns)
print(df)
print(df2)
Type1 Type2 Value
0 * * 1
1 AB* B* 3
2 B* * 2
Type1 Type2 Value
0 A B 1
1 ABC BC 4
2 B A 2
としてDF2の2行目は、DF2にライン0のに対し、ライン1とライン2 と一致する必要があります*なければならない私は& DF2 DF 2つのデータフレームを持っていると私はそれらを統合したいと思いますdf1の最初の行にのみ一致します。 どういうわけか私は
df2.merge(df,how='left',on=["Type1","Type2"])
しかし、ここでの結果は何も一致していないようなものを取得したいと思います。
これは私が得たい結果です。
data3 = [["A","B","1","1"],["ABC","BC",4,1],["ABC","BC",4,3],["B","A",2,1],["B","A",2,2]]
columns3 = ["Type1","Type2","Value_x","Value_y"]
results = pd.DataFrame(data3,columns=columns3)
print(results)
Type1 Type2 Value_x Value_y
0 A B 1 1
1 ABC BC 4 1
2 ABC BC 4 3
3 B A 2 1
4 B A 2 2
実際にdf2テーブルには100万行以上があるので、効率の理由からループを実行する余裕はないことに注意してください。
期待どおりの結果ですか? – Alexander
私はちょうどそれをやったよ:) – Nicolas