Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apply string.format() to row in Pandas DataFrame

Tags:

python

pandas

I would like to represent a row in a pandas DataFrame with a formatted string referencing the columns. The best method I have found is to cast the row to a dict and then string.format()

Assuming a pd.DataFrame df with the columns 'specimen' and 'date':

r = df.loc[0]
print("{specimen}_{date}".format(**r.to_dict()))

can be used to apply the format string using the column data.

This does not seem very efficient. Is there must be a better way to do this in pandas directly without converting to a dict while maintaining the flexibility of explicitly naming columns in the format string?

Update:

The ultimate purpose is to generate tick labels for a matplotlib plot. Using the answer below:

plot.set_yticklabels(["{specimen}_{date}".format(**r) for i,r in df.iterrows()])
like image 664
Mike Avatar asked Sep 02 '15 21:09

Mike


1 Answers

You can just use the row itself. It is a Series which supports dict-like access to the items:

>>> d
   A     B      C
0  1  This    One
1  2    is    Two
2  3  crud  Three
>>> "{A} then {B} and also {C}".format(**d.iloc[0])
'1 then This and also One'
like image 190
BrenBarn Avatar answered Sep 29 '22 22:09

BrenBarn