Я работаю над проектом ИИ, который включает обработку большого количества фреймов данных в Python. Я пытаюсь добавить значения к df
, однако я хочу сделать количество столбцов df
dynamici c в зависимости от количества столбцов кадра данных a
. rowMerge - это функция, которая принимает две переменные (a
и b
). a - это фрейм данных, который мы предоставляем, а b - фрейм данных, который, как мы ожидаем, вернет функция. Эта функция позволяет мне объединять строки, когда есть пять столбцов.
def rowMerger(a,b):
try:
b = pd.DataFrame(data=None, columns =[f'Column{i}' for i in range(0, len(a.columns))])
rule1 = lambda x: x not in ['']
u = a.loc[a['Column0'].apply(rule1) & a['Column1'].apply(rule1) & a['Column2'].apply(rule1)].index
findMergerindexs = list(u)
findMergerindexs.sort()
a = pd.DataFrame(a)
if (len(findMergerindexs) > 0):
for m in range(len(findMergerindexs)):
if not (m == (len(findMergerindexs)-1)):
startLoop = findMergerindexs[m]
endLoop = findMergerindexs[m+1]
else:
startLoop = findMergerindexs[m]
endLoop = len(a)
Column0 = ''
Column1 = ''
Column2 = ''
Column3 = ''
Column4 = ''
for n in range(startLoop,endLoop):
Column0 = Column0 + str(a.iloc[n,0])
Column1 = Column1 + str(a.iloc[n,1])
Column2 = Column2 + str(a.iloc[n,2])
Column3 = Column3 + str(a.iloc[n,3])
Column4 = Column4 + str(a.iloc[n,4])
b = b.append({'Column0': Column0.strip(), 'Column1': Column1.strip(), 'Column2': Column2.strip(), 'Column3': Column3.strip(), 'Column4': Column4.strip()}, ignore_index=True)
else:
print("File is not having a row for merging instances - Please check the file manually for instance - ")
except:
print("Error - While merging the rows")
return b
Функция, указанная выше, - это функция, созданная мной для объединения строк, чтобы я мог избавиться от пространства между строками. Например, у меня есть фрейм данных, как показано ниже.
df=[['7','4','5','7','8'],["","","",'7','4'],['9','4','7','8','4'],["","","",'7','5'],['4','8','5','4','6']]
df=pd.DataFrame(df)
df.columns=[f'Column{i}' for i in range(0, len(df.columns))]
Column0 Column1 Column2 Column3 Column4
7 4 5 7 8
7 4
9 4 7 8 4
7 5
4 8 5 4 6
И функция rowMerger
убирает пробел между строками и дает мне фрейм данных, который выглядит как показано ниже.
rowMerger(df,0)
Column1 Column2 Column3 Column4 Column5
7 4 5 77 84
9 4 7 87 45
4 8 5 4 6
Однако эта функция не является динамической c. То есть количество столбцов переменной b
определяется вручную. Вместо этого я хочу сделать число столбцов, сгенерированных внутри функции, динамическим c, основываясь на количестве столбцов переменной a
. Например, если число столбцов a
равно трем, я хочу создать три столбца (Column0
, Column0
, Column0
) и добавить значения к этим столбцам и вернуть фрейм данных с тремя столбцами.
Я перепробовал все, что мог, но это что-то из моих возможностей. Я все еще изучаю python, и я был бы очень признателен, если бы кто-нибудь мог мне помочь с этим.