我有一个包含三列的 Pandas 数据框,都是文本。如何创建一个仅包含三列中最长文本的新列?我将长度定义为简单的字符数。
请您参考如下方法:
我真的不确定这有多有效,但是,您可以对 DF 中的所有内容使用 .applymap(len) - 获取列轴上的最大索引,然后使用 .lookup(...) 就可以了,eg:
开始于:
df = pd.DataFrame({
'a': ['a', 'bb', 'c'],
'b': ['aaa', 'bb', 'cc'],
'c': ['a', 'bbb', 'ccc']
})
你可以这样做:
mx = df.applymap(len).idxmax(axis=1)
它为您提供了从每一行中获取的相关列:
0 b
1 c
2 c
dtype: object
然后您在原始 DF 中查找它们并将其作为新列分配回 DF,例如:
df['d'] = df.lookup(mx.index, mx.values)
给你一个最终的 DF:
a b c d
0 a aaa a aaa
1 bb bb bbb bbb
2 c cc ccc ccc
