我正在尝试将包含句子的Pandas DF转换为一个能够显示所有列和所有行中这些句子中单词数目的单词。
我尝试应用,转换,lambda函数和嵌套循环。
dat.direction.str.split().str.len()
def token_count(x):
if type(x) == str:
return x.split().str.len()
else:
return 0
dat.apply(token_count)
dat.transform(token_count)
dat.apply(lambda x:x.str.split().str.len())
dat.apply(lambda x:x.split().str.len())
dat.transform(lambda x:x.str.split().str.len())
dat.transform(lambda x:x.split().str.len())
dat.iloc[1,3].split(" ").str.len()
AttributeError: 'list' object has no attribute 'str'
答案 0 :(得分:1)
怎么样
import pandas as pd
df = pd.DataFrame({
"col1": ["this is a sentence", "this is another sentence"],
"col2": ["one more", "this is the last sentence"],
})
pd.concat([df[col].str.split().str.len() for col in df.columns], axis = 1)
答案 1 :(得分:1)
stack
stack
一维unstack
返回df.stack().str.split().str.len().unstack()
col1 col2
0 4 2
1 4 5
count
df.stack().str.count('\s+').unstack() + 1
applymap
df.applymap(lambda s: len(s.split()))
apply
df.apply(lambda s: s.str.split().str.len())
df = pd.DataFrame({
"col1": ["this is a sentence", "this is another sentence"],
"col2": ["one more", "this is the last sentence"],
})
答案 2 :(得分:0)
您可以使用第一种方法遍历数据框中的每一列。
out = pd.DataFrame(index=dat.index)
for col in dat:
out[col] = dat[col].str.split().str.len()