这基本上是一个熊猫语法问题。
我有一个数据框,其中包含用量化和校准标记的行,两者都是文本。有> 100,000行,但只有约200个独特的Quantification标签和~10个唯一的校准标签。我试图将它们连接成一个标签,我遇到了好奇心:
这有效:
df['n_q'] = df['Quantification'] + " (" + df['Calibration'] + ')'
但这不是:
df['n_q'] = "{0} ({1})".format(df['Quantification'], df['Calibration'])
后者似乎会让每一行都相同,我猜的所有标签都是连接起来的巨型字符串。
我的问题是如何使用str.format做我想做的事?
答案 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