Используйте read_csv
с StringIO
и index_col
параметром для установки первого столбца на index
:
input_string="""A;B;C
0;34;88
2;45;200
3;47;65
4;32;140
"""
df = pd.read_csv(pd.compat.StringIO(input_string),sep=';', index_col=0)
print (df)
B C
A
0 34 88
2 45 200
3 47 65
4 32 140
Ваше решение должно быть изменено с параметром split по умолчанию (произвольный пробел), передайте в DataFrame все значения списков без первого с параметром столбцов и, если необходимо, для индексации первого столбца добавьте DataFrame.set_axis
:
L = [x.split(';') for x in input_string.split()]
df = pd.DataFrame(L[1:], columns=L[0]).set_index('A')
print (df)
B C
A
0 34 88
2 45 200
3 47 65
4 32 140
Для общего решения используйте первое значение первого списка в set_index
:
L = [x.split(';') for x in input_string.split()]
df = pd.DataFrame(L[1:], columns=L[0]).set_index(L[0][0])
EDIT:
Вы можете установить имя столбца вместо имени индекса на A
значение:
df = df.rename_axis(df.index.name, axis=1).rename_axis(None)
print (df)
A B C
0 34 88
2 45 200
3 47 65
4 32 140