У меня есть два списка:Панды Dataframe найти и заменить
single = ['A','B']
double = ['AA','BB']
данные, хранящиеся в dataframe df
:
0 1 2 3
0 All 1 AA Yes
1 A 2 All No
, где все средства ['A','B']
в колонке 0 и означает в колонке 2 ['AA','BB']
, я хочу получить следующий информационный кадр df2
0 1 2 3
0 A 1 AA Yes
1 B 1 AA Yes
2 A 2 AA No
3 A 2 BB No
и порядок индекса строки не имеет значения. Я сейчас делаю:
single = ['A','B']
double = ['AA','BB']
df=pd.DataFrame([['All',1,'AA','Yes'],['A',2,'All','No']])
index = []
for i in range(len(df)):
if df.loc[i,0] == 'All':
index.append(i)
for j in single:
df.loc[len(df),:] = df.loc[i,:]
df.loc[len(df)-1,0] = j
df = df.drop(index).reset_index(drop=True)
index = []
for i in range(len(df)):
if df.loc[i,2] == 'All':
index.append(i)
for j in double:
df.loc[len(df),:] = df.loc[i,:]
df.loc[len(df)-1,2] = j
df2 = df.drop(index).reset_index(drop=True)
print df2
Он сначала добавляет две строки для представления «Все» в столбце 0 и удаляет эту строку. Затем для «Все» в колонке 2.
Любой более простой способ сделать это «найти и заменить»?
Спасибо. Он работает лучше. – ilovecp3