У меня есть такой фрейм данных:
import pandas as pd
df = pd.DataFrame({'col1': ['abc', 'def', 'tre'],
'col2': ['foo', 'bar', 'stuff']})
col1 col2
0 abc foo
1 def bar
2 tre stuff
и словарь, подобный этому:
d = {'col1': [0, 2], 'col2': [1]}
Словарь содержит имена столбцов и индексы значений, которые нужно извлечь из фрейма данных вгенерировать строки следующим образом:
abc (0, col1)
Итак, каждая строка начинается с самого элемента, а в скобках указаны индекс и имя столбца.
Я попробовал следующее понимание списка:
l = [f"{df.loc[{indi}, {ci}]} ({indi}, {ci})"
for ci, vali in d.items()
for indi in vali]
, что дает
[' col1\n0 abc (0, col1)',
' col1\n2 tre (2, col1)',
' col2\n1 bar (1, col2)']
Итак, это почти нормально, нужно избегать только частей col1\n0
.
Если я попытаюсь
f"{df.loc[0, 'col1']} is great"
Я получу
'abc is great'
, как требуется, однако с
x = 0
f"{df.loc[{x}, 'col1']} is great"
Я получу
'0 abc\nName: col1, dtype: object is great'
Как это можно исправить?