按长度查找字符串列的最大值,并将其分配给Pandas中同一列的其他行



我有一个pandas列

currency
CNY
人民币,印度卢比
INR

简单。将内置maxkey=len一起使用

df['currency'] = max(df['currency'], key=len)

currency
0  CNY,INR
1  CNY,INR
2  CNY,INR

查找长度最大的货币:

currency_with_maximum_length = df.currency[df.currency.str.len().idxmax()] # 'CNY,INR'

并将其分配给您的列:

df['currency'] = currency_with_maximum_length 

输出:

currency
0  CNY,INR
1  CNY,INR
2  CNY,INR

您可以将str.lenidxmax:结合使用

df['currency'] = df.loc[df['currency'].str.len().idxmax(), 'currency']

输出:

currency
0  CNY,INR
1  CNY,INR
2  CNY,INR

这使您能够在需要时轻松地为每个组应用相同的逻辑:

g = df['currency'].str.len().groupby(df['group']).idxmax()
df['new_col'] = df['group'].map(g.map(df['currency']))

示例:

group currency  new_col
0     A      CNY  CNY,INR
1     A  CNY,INR  CNY,INR
2     A      INR  CNY,INR
3     B      XYZ     WXYZ
4     B     WXYZ     WXYZ
5     B      INR     WXYZ

最新更新