在我的代码中,df定义如下
df = pd.read_excel(io=file_name, sheet_name=sheet, sep='\s*,\s*')
Run Code Online (Sandbox Code Playgroud)
我有一个看起来像这样的[86 rows x 1 columns]数据框dfprint(df)
0
Male 511
Female 461
Male 273
Female 217
Male 394
Female 337
Female 337
Male 337
...
Run Code Online (Sandbox Code Playgroud)
我希望编写一个像这样merge的Male和Female条目的代码
0 1 2 3 ...
Male 511 273 394 337 ...
Female 461 217 337 337 ...
Run Code Online (Sandbox Code Playgroud)
我需要做的最后一项任务是.sum()男性排,然后是女排,以获得每个性别的总数.我是python和pandas的新手,到目前为止我还没有取得多大进展.任何帮助,教程,文档都会很棒!谢谢!
编辑:keys我指的是索引.我希望这些男性和女性的标签可以用来"聚集"这些行,但我不知道如何.
编辑:我已经完成了我的最后一项任务
print(df.ix['Female'].sum())
print(df.ix['Male'].sum())
Run Code Online (Sandbox Code Playgroud)
但我还没有完成我的最新任务.有任何想法吗?
我有一个df看起来像这样的数据框:
data = [['Alex','Japan'],['Joe','Japan, India']]
df = pd.DataFrame(data,columns=['Name','Countries'])
Name Countries
Alex Japan
Joe Japan, India
Run Code Online (Sandbox Code Playgroud)
所以我想以这样的方式修改 df,当我实现时df['Countries'].value_coun
ts(),我得到
Japan 2
India 1
Run Code Online (Sandbox Code Playgroud)
所以我想我应该df['Countries']使用这个将这些字符串转换成一个列表:
df['Countries']= df['Countries'].str[0:].str.split(',').tolist()
Name Countries
0 Alex [Japan]
1 Bob [Japan, India]
Run Code Online (Sandbox Code Playgroud)
但是现在当我运行时df['Countries'].value_counts(),出现以下错误:
TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
我希望的是,当我运行 a 时,.values_counts()我会为日本获得 2 分,为印度获得 1 分。请看看你能不能帮我解决这个问题。谢谢!
我有一个包含日期和质量虚拟值(0 或 1)的数据框:
unixTimestamp date quality
0 1370131200 06 2, 2013 1
1 1290643200 11 25, 2010 1
2 1283990400 09 9, 2010 1
3 1290556800 11 24, 2010 1
4 1317254400 09 29, 2011 1
5 1388707200 01 3, 2014 1
6 1398556800 04 27, 2014 1
7 1399161600 05 4, 2014 0
8 1405036800 07 11, 2014 1
9 1390176000 01 20, 2014 1
10 1397606400 04 16, 2014 1
Run Code Online (Sandbox Code Playgroud)
我想做的:绘制随着quality时间的推移“是”(1) 的频率。
我尝试过:绘制这样的直方图:
plt.hist(x=df.loc[df['quality'] == 1].unixTimestamp, …Run Code Online (Sandbox Code Playgroud)