Я пытаюсь построить кадры данных, используя большой объем данных, хранящихся в текстовых файлах.Однако я не создавал данные, поэтому мне приходится работать с разочаровывающим форматированием, содержащимся в нем.Я не мог заставить свой код работать с большими данными (и почти сломал мой компьютер при этом), поэтому установите меньший фрейм данных, например, так:
'Value' ID_1 ID_2
0 11122222 ABC42123 33333
1 21219299 YOF21233 88821
2 00022011 ERE00091 23124
3 75643311;21233332 ROB21288 99421
4 12412421 POW94277 12231;33221
5 54221721 IRS21231;YOU28137 13123
Мое разочарование заключается в использовании точек с запятой вданные.Данные предназначены для представления идентификаторов, но несколько идентификаторов были назначены нескольким переменным.Я хочу повторить эти строки, чтобы можно было искать в данных отдельные идентификаторы и иметь таблицу данных, которая выглядит следующим образом:
'Value' ID_1 ID_2
0 11122222 ABC42123 33333
1 21219299 YOF21233 88821
2 00022011 ERE00091 23124
3 75643311 ROB21288 99421
4 21233332 ROB21288 99421
5 12412421 POW94277 12231
6 12412421 POW94277 33221
7 54221721 YOU28137 13123
8 54221721 IRS21231 13123
Переиндексация не является проблемой, если различные идентификаторы остаются связанными сдруг к другу и к их правильным значениям.
К сожалению, все мои попытки разделить данные до сих пор заканчивались полным провалом.Мне удалось настроить функцию, которая повторяет данные, содержащие точку с запятой, анализировать это через мою функцию для каждого столбца, но затем не удается разделить данные.
def delete_dup(df,column):
for a in column:
location = df.loc[df.duplicated(subset= column, keep=False)]
for x in location:
semicolon = df.loc[df[column].str.contains(';', regex=True)]
duplicate = semicolon.duplicated(subset= column, keep='first')
tiny_df = semicolon.loc[duplicate]
split_up = tiny_df[column].str.split(';')
return pd.concat([df, split_up])
'Value' ID_1 ID_2 0
11122222 ABC42123 33333 NaN
21219299 YOF21233 88821 NaN
00022011 ERE00091 23124 NaN
75643311;21233332 ROB21288 99421 NaN
12412421 POW94277 12231;33221 NaN
54221721 IRS21231;YOU28137 13123 NaN
75643311;21233332 ROB21288 99421 NaN
54221721 IRS21231;YOU28137 13123 NaN
12412421 POW94277 12231;33221 NaN
NaN NaN NaN [75643311, 21233332]
Мне кажется, что это самый близкий япришел, и это все еще далеко от того, что я хочу.Любые операторы «Если», которые я пытаюсь сделать на фреймах данных, встречаются с «ValueError: Истинное значение DataFrame неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () илиa.All () «.ошибка, которая так расстраивает читать.Любые идеи о том, как заставить панд делать то, что я хочу?