在python pandas中,有一个str值的Series/dataframe列可以组合成一个长字符串:
df = pd.DataFrame({'text' : pd.Series(['Hello', 'world', '!'], index=['a', 'b', 'c'])})
目标:"你好,世界!
到目前为止,诸如df['text'].apply(lambda x: ' '.join(x))
之类的方法仅返回序列。
到达目标串联字符串的最佳方法是什么?
您可以直接在序列上join
一个字符串:
In [3]:
' '.join(df['text'])
Out[3]:
'Hello world !'
除了join
,你也可以使用pandas string方法.str.cat
In [171]: df.text.str.cat(sep=' ')
Out[171]: 'Hello world !'
但是,join()
要快得多。
您的代码正在"返回序列",因为您没有指定正确的轴。试试这个:
df.apply(' '.join, axis=0)
text Hello world !
dtype: object
指定 axis=0 将合并每列中的所有值,并将它们放在一个字符串中。返回类型是一个序列,其中索引标签是列名,值是相应的联接字符串。如果要一次将多个列合并为一个字符串,这将特别有用。
通常,我发现在使用apply时了解您需要哪个轴是令人困惑的,因此,如果它没有按照您认为的方式工作,请始终尝试沿其他轴应用。