Python 计算dataframe列中字典值的字符数
下载Facebook数据后,他们会提供json文件和您的帖子信息。我用pandas阅读json和数据帧。现在我想数一数我写的每一篇文章的人物。帖子位于:df['data']中,类似:[{'post':'Happy bday Raul'}] 我希望输出是:Happy bday Raul的字符数,在本例中为15,在从[{'post':'Morning'}]开始的早晨中为7 列为具有以下格式的日期和数据:Python 计算dataframe列中字典值的字符数,python,json,pandas,dataframe,count,Python,Json,Pandas,Dataframe,Count,下载Facebook数据后,他们会提供json文件和您的帖子信息。我用pandas阅读json和数据帧。现在我想数一数我写的每一篇文章的人物。帖子位于:df['data']中,类似:[{'post':'Happy bday Raul'}] 我希望输出是:Happy bday Raul的字符数,在本例中为15,在从[{'post':'Morning'}]开始的早晨中为7 列为具有以下格式的日期和数据: Date Data 01-01-2020 *[{'post': 'Morni
Date Data
01-01-2020 *[{'post': 'Morning'}]*
10-03-2020 *[{'post': 'Happy bday Raul'}]*
17-03-2020 *[{'post': 'This lockdown is sad'}]*
我试图通过这样做来计算这个[{'post':'Morning'}]的字符数
df['count']=df['data'].str.len()
但它不起作用,结果是1
我需要提取字典的值并进行len运算来计算字符数。输出将是:
Date Data COUNT
01-01-2020 *[{'post': 'Morning'}]* 5
10-03-2020 *[{'post': 'Happy bday Raul'}]* 15
17-03-2020 *[{'post': 'This lockdown is sad'}]* 20
编辑:
习惯于口述
df11=df_post['data'].to_dict()
输出
{0: [{'post': 'Feliz cumpleaños Raul'}],
1: [{'post': 'Muchas felicidades Tere!!! Espero que todo vaya genial y siga aún mejor! Un beso desde la Escandinavia profunda'}],
2: [{'post': 'Hola!\nUna investigadora vendrá a finales de mayo, ¿Alguien tiene una habitación libre en su piso para ella? Many Thanks!'}],
3: [{'post': '¿Cómo va todo? Se que muchos estáis o estábais por Galicia :D\n\nOs recuerdo, el proceso de Matriculación tiene unos plazos concretos: desde el lunes 13 febrero hasta el viernes 24 de febrero.'}]
}
您可以使用列表理解访问每行的post键的值,并使用str.len计算长度: 在一行代码中,它将如下所示:
df[1] = pd.Series([x['post'] for x in df[0]]).str.len()
这也会起作用,但我认为执行起来会比较慢:
df[1] = df[0].apply(lambda x: x['post']).str.len()
完整的可复制代码如下:
df = pd.DataFrame({0: [{'post': 'Feliz cumpleaños Raul'}],
1: [{'post': 'Muchas felicidades Tere!!! Espero que todo vaya genial y siga aún mejor! Un beso desde la Escandinavia profunda'}],
2: [{'post': 'Hola!\nUna investigadora vendrá a finales de mayo, ¿Alguien tiene una habitación libre en su piso para ella? Many Thanks!'}],
3: [{'post': '¿Cómo va todo? Se que muchos estáis o estábais por Galicia :D\n\nOs recuerdo, el proceso de Matriculación tiene unos plazos concretos: desde el lunes 13 febrero hasta el viernes 24 de febrero.'}]
})
df = df.T
df[1] = [x['post'] for x in df[0]]
df[2] = df[1].str.len()
df
Out[1]:
0 \
0 {'post': 'Feliz cumpleaños Raul'}
1 {'post': 'Muchas felicidades Tere!!! Espero qu...
2 {'post': 'Hola!
Una investigadora vendrá a fi...
3 {'post': '¿Cómo va todo? Se que muchos está...
1 2
0 Feliz cumpleaños Raul 22
1 Muchas felicidades Tere!!! Espero que todo vay... 112
2 Hola!\nUna investigadora vendrá a finales de ... 123
3 ¿Cómo va todo? Se que muchos estáis o está... 195
显示更多代码。请提供预期的代码。显示中间结果与您预期的不同之处。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。你有一本基本字典。从该条目中提取值并使用len。因为您没有发布代码,所以我们无法修复您的特定问题。@Prune我刚刚添加了代码以及我希望作为输出的内容。在读取输入数据帧并发布输出后,您可以对其执行df.to_dict操作吗?
df = pd.DataFrame({0: [{'post': 'Feliz cumpleaños Raul'}],
1: [{'post': 'Muchas felicidades Tere!!! Espero que todo vaya genial y siga aún mejor! Un beso desde la Escandinavia profunda'}],
2: [{'post': 'Hola!\nUna investigadora vendrá a finales de mayo, ¿Alguien tiene una habitación libre en su piso para ella? Many Thanks!'}],
3: [{'post': '¿Cómo va todo? Se que muchos estáis o estábais por Galicia :D\n\nOs recuerdo, el proceso de Matriculación tiene unos plazos concretos: desde el lunes 13 febrero hasta el viernes 24 de febrero.'}]
})
df = df.T
df[1] = [x['post'] for x in df[0]]
df[2] = df[1].str.len()
df
Out[1]:
0 \
0 {'post': 'Feliz cumpleaños Raul'}
1 {'post': 'Muchas felicidades Tere!!! Espero qu...
2 {'post': 'Hola!
Una investigadora vendrá a fi...
3 {'post': '¿Cómo va todo? Se que muchos está...
1 2
0 Feliz cumpleaños Raul 22
1 Muchas felicidades Tere!!! Espero que todo vay... 112
2 Hola!\nUna investigadora vendrá a finales de ... 123
3 ¿Cómo va todo? Se que muchos estáis o está... 195