我有一個包含兩列的數據框。我想創建一個新列并輸入具有最長字符串的列。所以 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
提交
取消