【发布时间】:2019-12-23 05:11:13
【问题描述】:
我有一个包含两列的数据框,一列用于名称,另一列用于字符串值。 我正在尝试按名称计算选择字符串值的频率。
我已经尝试过 pandas.pivot_table 和 pandas.DataFrame.groupby,但我想创建一个全新的数据框而不是聚合。
例如,我有一个数据框:
import pandas as pd
import numpy as np
data = np.array([['John', 'x'], ['John', 'x'], ['John', 'x'], ['John', 'y'], ['John', 'y'], ['John', 'a'],
['Will', 'x'], ['Will', 'z']])
df = pd.DataFrame(data, columns=['name','str_value'])
df
导致:
name str_value
0 John x
1 John x
2 John x
3 John y
4 John y
5 John a
6 Will x
7 Will z
预期的结果是:
name x y z
0 John 3 2 0
1 Will 1 0 1
另外:
name x y z
0 John True True False
1 Will True False True
我只想选择 x、y、z 并根据返回值是 0 还是 NaN 返回 True 或 False。
编辑: 谢谢你的回答。 这些效果很好,但输出有子组“str_value”:
str_value x y z
name
John True True False
Will True False True
有没有办法删除它,所以我在同一级别上有“name”、“x”、“y”、“z”? 使用 .reset_index() 我得到:
str_value name x y z
0 John True True False
1 Will True False True
我的索引名称现在是“str_value”吗?我可以重命名或删除它吗?
【问题讨论】:
标签: python dataframe frequency