Python 获取字符串中的字数时,pandas系列中的空字符串计为一
我有一个问题,当在一行中没有刺时,计算熊猫串系列中的项数 当每行有一个或多个项目时,我能够计算字数。但是,如果行没有值,则在运行时它是一个空字符串 pd.[mytext'].str.split',',我也得到了一个 这些答案对我不起作用 我如何处理这件事?提前谢谢 以第一个答案为例:Python 获取字符串中的字数时,pandas系列中的空字符串计为一,python,string,pandas,apply,Python,String,Pandas,Apply,我有一个问题,当在一行中没有刺时,计算熊猫串系列中的项数 当每行有一个或多个项目时,我能够计算字数。但是,如果行没有值,则在运行时它是一个空字符串 pd.[mytext'].str.split',',我也得到了一个 这些答案对我不起作用 我如何处理这件事?提前谢谢 以第一个答案为例: df = pd.DataFrame(['one apple','','box of oranges','pile of fruits outside', 'one banana', 'fruits']) df.co
df = pd.DataFrame(['one apple','','box of oranges','pile of fruits outside', 'one banana', 'fruits'])
df.columns = ['fruits']
得到证实的答案是
count = df['fruits'].str.split().apply(len).value_counts()
count.index = count.index.astype(str) + ' words:'
count.sort_index(inplace=True)
count
给
Out[13]:
0 words: 1
1 words: 1
2 words: 2
3 words: 1
4 words: 1
Name: fruits, dtype: int64
我希望第二个字符串为零,但尝试的每个解决方案都给了我一个。使用拆分空字符串时返回空列表,而使用拆分时,“,”空字符串返回带空字符串的列表。这就是为什么该示例不适用于您的解决方案
您可以尝试以下方法:首先,根据您的示例,使用逗号分割字符串,我假设这就是您的情况。然后,若split返回带空字符串的列表,函数返回0,否则返回带单词的列表长度
pd.Series['mytext',].str.split','.applylambda x:0如果x=[]否则lenx在您的问题中,您指的是str.split',,但示例是str.split。根据是否有参数,函数具有不同的行为 您实际要做的是什么?使用str.split并使用str.len对元素进行计数:
将实际数据的“”替换为“”。否,它不是。请解释这是如何发生的。提供一个.Done,上面的例子给出了一个小的概述。我认为您误解了输出的内容。输出告诉您N个字的行数。1行有0个字,1行有1个字,2行有2个字,1行有3个字,依此类推。你想要每行的字数吗?是的,但是Martyna已经有了解决我问题的办法。不管怎样,谢谢你:我相信他们做到了。但不幸的是,这不是一个很好的解决方案。我的字符串用逗号分隔。字里行间没有空白。这就是为什么我提到我的拆分版本。是的,正是我想要的。非常感谢这给了我一些我有空字符串的。也许我在另一个线程中给出了错误的示例。我的数据框看起来像df=pd。每行数据框['banana','apple','other,tropical,fruit']字符串,用逗号分隔,有时用空字符串分隔。@Mikey它如何给出1?我刚才在我的数据中给大家展示了一个例子,其中在索引为1的行中显示了0。你能解释清楚为什么这样不行吗?我还告诉过你把分隔符从空格改为逗号来解决你的问题。我确实改变了分隔符。请尝试以下示例:test=pd.DataFrame['banana','apple','other,tropical,fruit']test.columns=['text']test.text.str.split','.str.len我想要零的第三个条目为1
df['wordcount'] = df.fruits.str.split().str.len()
print(df)
fruits wordcount
0 one apple 2
1 0
2 box of oranges 3
3 pile of fruits outside 4
4 one banana 2
5 fruits 1