在Pandas DataFrame中对行应用string.format()

5
我希望用一个格式化的字符串引用列来表示 pandas DataFrame 中的一行。我发现最好的方法是将该行转换为字典,然后使用 string.format()。
假设有一个具有列“specimen”和“date”的 pd.DataFrame df:
r = df.loc[0]
print("{specimen}_{date}".format(**r.to_dict()))

可以使用列数据应用格式字符串。

这种方法似乎不太高效。在保持显式命名列的灵活性的同时,是否有更好的方法可以直接在pandas中完成而无需转换为字典?

更新:

最终目的是为matplotlib图形生成刻度标签。使用下面的答案:

plot.set_yticklabels(["{specimen}_{date}".format(**r) for i,r in df.iterrows()])
1个回答

7
您可以直接使用行本身。它是一个支持字典样式访问项的Series
>>> 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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接