我对Pandas还不熟悉,我正在尝试获取数据帧中每一行的最大字符串。在
import pandas as pd
import sqlite3
authors = pd.read_sql('select * from authors')
authors['name']
...
12 KRISHNAN RAJALAKSHMI
13 J O
14 TSIPE
15 NURRIZA
16 HATICE OZEL
17 D ROMERO
18 LLIBERTAT
19 E F
20 JASMEET KAUR
...
我希望得到的是每个authors['name']行中最大的字符串:
^{pr2}$我试着用空格分隔字符串并应用(max),但它不起作用。熊猫似乎并没有将max应用于每一行。在
authors['name'].str.split().apply(max)
# or
authors['name'].str.split().apply(lambda x: max(x))
# or
def get_max(x):
y = max(x)
print (y) # y is the biggest string in each row
return y
authors['name'].str.split().apply(get_max)
# Still results in:
...
12 KRISHNAN RAJALAKSHMI
13 J O
14 TSIPE
15 NURRIZA
16 HATICE OZEL
17 D ROMERO
18 LLIBERTAT
19 E F
20 JASMEET KAUR
...
当您告诉pandas将
max
应用于分割序列时,它不知道它应该最大化什么。你可以试试类似的方法对于每一行,这将创建一个子字符串数组,并使用字符串长度作为键返回最大的字符串。在
还要注意,虽然
authors['name'].apply(lambda x: max(x.split()))
不需要为max指定key=len
,但authors['name'].str.split().max()
不起作用,因为max()
是专门为获得数值列的最大值而不是每个拆分行的最大长度字符串而构建的pandas数据帧方法。在你不能替换它的值。。。在
尝试此功能:
然后你只需要打电话:
^{pr2}$注意,我在这段代码中重新分配了
df[0]
的每个值。在输出:
代码中的主要问题是没有重新分配每行中的值。在
相关问题 更多 >
编程相关推荐