我有一个包含两列的数据框。我想创建一个新列并输入具有最长字符串的列。所以 column_a column_b column_c 0 'dog is fast' 'dog is faster' 'dog is faster' (desired output)我试过这段代码,但得到一个错误,说 int 不可迭代,我正在考虑将系列合并到 df。我不确定如何立即将它实施到 df 的列中。column_c = pd.Series() for i in len(df.column_a): if len(df.column_a.iloc[i]) >= len(df.column_b.iloc[0]): column_c.append(df.column_a.iloc[i]) else: column_c.append(df.column_b.iloc[i])任何帮助都值得赞赏。
3 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
使用pandas.DataFrame.apply:
给定样本数据
import pandas as pd
df = pd.DataFrame([['fast', 'faster'], ['slower', 'slow']])
0 1
0 fast faster
1 slower slow
df['column_c'] = df.apply(lambda x:max(x, key=len), 1)
输出:
0 1 column_c
0 fast faster faster
1 slower slow slower
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
可以使用 df.apply()
df['column_c'] = df.apply(lambda x: x[0] if len(x[0]) > len(x[1]) else x[1], axis=1)
哔哔one
TA贡献1854条经验 获得超8个赞
使用np.where与str.len
df['column_c']=np.where(df.column_a.str.len()>df.column_b.str.len(),df.column_a,df.column_b)
df
Out[301]:
column_a column_b column_c
0 'dog is fast' 'dog is faster' 'dog is faster'
添加回答
举报
0/150
提交
取消
