LEFT| RIGHT| FULL)(INNER| OUTER)连接?merge?join?concat?update?谁?什么?为什么?!... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.
这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).
请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.
所以我的数据集有n个日期的位置信息.问题是每个日期实际上是一个不同的列标题.例如,CSV看起来像
location name Jan-2010 Feb-2010 March-2010
A "test" 12 20 30
B "foo" 18 20 25
Run Code Online (Sandbox Code Playgroud)
我想要的是它看起来像
location name Date Value
A "test" Jan-2010 12
A "test" Feb-2010 20
A "test" March-2010 30
B "foo" Jan-2010 18
B "foo" Feb-2010 20
B "foo" March-2010 25
Run Code Online (Sandbox Code Playgroud)
问题是我不知道列中有多少个日期(虽然我知道它们总是会在名字后面开始)
我刚刚开始学习熊猫,并想知道它们pandas groupby和pandas pivot_table功能之间是否有任何区别.任何人都可以帮我理解它们之间的区别.帮助将不胜感激.
df2 = pd.DataFrame({'X' : ['X1', 'X1', 'X1', 'X1'], 'Y' : ['Y2','Y1','Y1','Y1'], 'Z' : ['Z3','Z1','Z1','Z2']})
X Y Z
0 X1 Y2 Z3
1 X1 Y1 Z1
2 X1 Y1 Z1
3 X1 Y1 Z2
g=df2.groupby('X')
pd.pivot_table(g, values='X', rows='Y', cols='Z', margins=False, aggfunc='count')
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用最后一次):... AttributeError:'Index'对象没有属性'index'
如何获得一个数据透视表,其中包含另外两列的一个DataFrame列的唯一值计数?
是否有aggfunc用于计数独特之处?我应该用np.bincount()吗?
NB.我知道'系列',values_counts()但我需要一个数据透视表.
编辑:输出应该是:
Z Z1 Z2 Z3
Y
Y1 1 1 NaN
Y2 NaN NaN 1
Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何在python中使用Pandas进行"反向融化".这是我的起始数据
import pandas as pd
from StringIO import StringIO
origin = pd.read_table(StringIO('''label type value
x a 1
x b 2
x c 3
y a 4
y b 5
y c 6
z a 7
z b 8
z c 9'''))
origin
Out[5]:
label type value
0 x a 1
1 x b 2
2 x c 3
3 y a 4
4 y b 5
5 y c 6
6 z a 7
7 z b 8
8 z …Run Code Online (Sandbox Code Playgroud) 关于Pandas pivot方法的文档,我们有:
Examples
--------
>>> df
foo bar baz
0 one A 1.
1 one B 2.
2 one C 3.
3 two A 4.
4 two B 5.
5 two C 6.
>>> df.pivot('foo', 'bar', 'baz')
A B C
one 1 2 3
two 4 5 6
Run Code Online (Sandbox Code Playgroud)
我DataFrame的结构如下:
name id x
----------------------
0 john 1 0
1 john 2 0
2 mike 1 1
3 mike 2 0
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
1 2 # (this is the id …Run Code Online (Sandbox Code Playgroud) 我有以下数据帧:
Year Country medal no of medals
1896 Afghanistan Gold 5
1896 Afghanistan Silver 4
1896 Afghanistan Bronze 3
1896 Algeria Gold 1
1896 Algeria Silver 2
1896 Algeria Bronze 3
Run Code Online (Sandbox Code Playgroud)
我想要这样.
Year Country Gold Silver Bronze
1896 Afghanistan 5 4 3
1896 Algeria 1 2 3
Run Code Online (Sandbox Code Playgroud)
Stack/Unstack似乎不起作用.
我想在熊猫上运行一个轴DataFrame,索引是两列,而不是一列.例如,年份的一个字段,月份的一个字段,显示"项目1"和"项目2"的"项目"字段和带有数值的"值"字段.我希望索引是年+月.
我设法让这个工作的唯一方法是将两个字段合并为一个,然后再将它们分开.有没有更好的办法?
下面复制的最小代码.非常感谢!
PS是的,我知道关键字'pivot'和'multi-index'还有其他问题,但我不明白他们是否/如何帮助我解决这个问题.
import pandas as pd
import numpy as np
df= pd.DataFrame()
month = np.arange(1, 13)
values1 = np.random.randint(0, 100, 12)
values2 = np.random.randint(200, 300, 12)
df['month'] = np.hstack((month, month))
df['year'] = 2004
df['value'] = np.hstack((values1, values2))
df['item'] = np.hstack((np.repeat('item 1', 12), np.repeat('item 2', 12)))
# This doesn't work:
# ValueError: Wrong number of items passed 24, placement implies 2
# mypiv = df.pivot(['year', 'month'], 'item', 'value')
# This doesn't work, either:
# df.set_index(['year', 'month'], inplace=True) …Run Code Online (Sandbox Code Playgroud) 我有以下数据帧.
df.head(30)
struct_id resNum score_type_name score_value
0 4294967297 1 omega 0.064840
1 4294967297 1 fa_dun 2.185618
2 4294967297 1 fa_dun_dev 0.000027
3 4294967297 1 fa_dun_semi 2.185591
4 4294967297 1 ref -1.191180
5 4294967297 2 rama -0.795161
6 4294967297 2 omega 0.222345
7 4294967297 2 fa_dun 1.378923
8 4294967297 2 fa_dun_dev 0.028560
9 4294967297 2 fa_dun_rot 1.350362
10 4294967297 2 p_aa_pp -0.442467
11 4294967297 2 ref 0.249477
12 4294967297 3 rama 0.267443
13 4294967297 3 omega 0.005106
14 4294967297 3 fa_dun …Run Code Online (Sandbox Code Playgroud) 我已经看到了将一个列/系列爆炸成Pandas数据帧的多个列的主题的一些变化,但我一直在尝试做一些事情而不是真正成功地使用现有的方法.
给定一个像这样的DataFrame:
key val
id
2 foo oranges
2 bar bananas
2 baz apples
3 foo grapes
3 bar kiwis
Run Code Online (Sandbox Code Playgroud)
我想将key系列中的项目转换为列,并将val值作为值,如下所示:
foo bar baz
id
2 oranges bananas apples
3 grapes kiwis NaN
Run Code Online (Sandbox Code Playgroud)
我觉得这应该是相对简单的事情,但是我现在一直在抨击我的头几个小时,随着卷积水平的提高,并没有成功.
pandas ×10
python ×10
pivot ×3
join ×1
melt ×1
merge ×1
multi-index ×1
pivot-table ×1
reshape ×1