У меня есть csv
, который выглядит так, как показано ниже
AB22,AD34,GQ22,BQ77a1,BQ77a2,BQ77a3,CA33,LA21,MO22c1,MO22c4
"ab,vd","va,ca","aa","ba,po,la","ma,na,qa","la,oo,aa","ca","na,la","re,te","ka,lo"
"vb,zr","ra,oa","na","oa,yo,sa","xa,ia,ga","lk,po,za","ja","ka,la","rv,gh","xa,jk"
Приведенный выше csv
- это просто более короткая версия большего csv
, который у меня есть. В нем больше строк и больше столбцов. Но этого примера достаточно для ответа на мой вопрос.
Теперь у меня есть список имен столбцов, который выглядит следующим образом
columns = ["BQ77", "MO22"]
Теперь мне нужно найти столбцы в csv
который выглядит как каждое из имен столбцов, которые у меня есть в списке, и сворачивает такие столбцы в один, в котором я делю значения разделенными запятыми.
Например, для столбца BQ77
столбцы, которые выглядят так же в csv
- это BQ77a1,BQ77a2,BQ77a3
, а для столбца MO22
столбцы в csv
- MO22c1,MO22c4
Теперь такие столбцы необходимо свернуть, а значения нужно объединить (разделить запятыми) и имя столбца должно быть столбцом из списка columns
.
Итак, мой csv
должен выглядеть так
AB22,AD34,GQ22,BQ77,CA33,LA21,MO22
"ab,vd","va,ca","aa","ba,po,la,ma,na,qa,la,oo,aa","ca","na,la","re,te,ka,lo"
"vb,zr","ra,oa","na","oa,yo,sa,xa,ia,ga,lk,po,za","ja","ka,la","rv,gh,xa,jk"
Я создал сопоставление столбцов, приведенных в списке, со столбцами в csv
, которые им соответствуют. Вот что я сделал
import pandas as pd
columns = ["BQ77", "MO22"]
df = pd.read_excel(io="/Users/souvikray/Downloads/test.xlsx", sheet_name="A1") // file originally is an excel file
headers = df.columns.tolist()
col_map = {}
for column1 in columns:
for column2 in headers:
if column1 in column2:
if col_map.get(column1):
col_map[column1].append(column2)
else:
col_map[column1] = [column2]
Итак, я получил отображение
col_map = {"BQ77": ["BQ77a1", "BQ77a2", "BQ77a3"], "MO22": ["MO22c1","MO22c4"]}
Теперь я не уверен, как я могу использовать эту информацию для свертывания похожих столбцов. Я также поискал в Интернете и нашел этот вопрос Объединить несколько значений столбца в один столбец в python pandas, но здесь столбцы непрерывны, но в моем случае необходимые столбцы встречаются в определенных местах
Есть ли способ сделать это?
Примечание: Поскольку я не публиковал весь CSV-файл, следует помнить, что значения столбцов могут иметь int и плавать тоже.