Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取字符串中的字数时,pandas系列中的空字符串计为一_Python_String_Pandas_Apply - Fatal编程技术网

Python 获取字符串中的字数时,pandas系列中的空字符串计为一

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

我有一个问题,当在一行中没有刺时,计算熊猫串系列中的项数

当每行有一个或多个项目时,我能够计算字数。但是,如果行没有值,则在运行时它是一个空字符串 pd.[mytext'].str.split',',我也得到了一个

这些答案对我不起作用

我如何处理这件事?提前谢谢

以第一个答案为例:

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