如何使用str.format组合pandas数据框中的标签?

时间:2014-03-13 22:12:14

标签: python pandas

这基本上是一个熊猫语法问题。

我有一个数据框,其中包含用量化和校准标记的行,两者都是文本。有> 100,000行,但只有约200个独特的Quantification标签和~10个唯一的校准标签。我试图将它们连接成一个标签,我遇到了好奇心:

这有效:

df['n_q'] = df['Quantification'] + " (" + df['Calibration'] + ')'

但这不是:

df['n_q'] = "{0} ({1})".format(df['Quantification'], df['Calibration'])

后者似乎会让每一行都相同,我猜的所有标签都是连接起来的巨型字符串。

我的问题是如何使用str.format做我想做的事?

1 个答案:

答案 0 :(得分:2)

一种方法是使用申请:

In [11]: df = pd.DataFrame([['a', 'b'], ['c', 'd']], columns=['A', 'B'])

In [12]: df['A'] + ' (' + df['B'] + ')'
Out[12]: 
0    a (b)
1    c (d)
dtype: object

In [13]: df.apply(lambda x: '{0} ({1})'.format(*x), axis=1)
Out[13]: 
0    a (b)
1    c (d)
dtype: object

注意:当您使用所有列时,此功能正常工作。

您可以按列名称引用更整洁,更强大的解决方案:

In [14]: df.apply(lambda x: '{A} ({B})'.format(**x), axis=1)
Out[14]:
0    a (b)
1    c (d)
dtype: object