小编Fab*_*nna的帖子

熊猫:如何对单个列使用apply()函数?

我有一个有两列的pandas数据框.我需要更改第一列的值而不影响第二列,只需更改第一列值即可返回整个数据框.我怎么能用熊猫申请呢?

python dataframe pandas python-3.5

207
推荐指数
7
解决办法
24万
查看次数

pandas - 从字典向数据框添加新列

我想在数据框中添加一个列'D',如下所示:

U,L
111,en
112,en
112,es
113,es
113,ja
113,zh
114,es
Run Code Online (Sandbox Code Playgroud)

基于以下词典:

d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}
Run Code Online (Sandbox Code Playgroud)

以便生成的数据框显示为:

U,L,D
111,en,en
112,en,en
112,es,en
113,es,es
113,ja,es
113,zh,es
114,es,es
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试了该pd.join()方法,但我无法弄清楚它如何与字典一起使用.

python pandas

54
推荐指数
3
解决办法
5万
查看次数

如何在Subplot中绘制多个Seaborn Jointplot

我在将Seaborn Jointplot放在多列中时遇到了问题subplot.

import pandas as pd
import seaborn as sns

df = pd.DataFrame({'C1': {'a': 1,'b': 15,'c': 9,'d': 7,'e': 2,'f': 2,'g': 6,'h': 5,'k': 5,'l': 8},
          'C2': {'a': 6,'b': 18,'c': 13,'d': 8,'e': 6,'f': 6,'g': 8,'h': 9,'k': 13,'l': 15}})

fig = plt.figure();   
ax1 = fig.add_subplot(121);  
ax2 = fig.add_subplot(122);

sns.jointplot("C1", "C2", data=df, kind='reg', ax=ax1)
sns.jointplot("C1", "C2", data=df, kind='kde', ax=ax2)
Run Code Online (Sandbox Code Playgroud)

注意如何只将一部分jointplot放置在子图内,其余部分留在另外两个图框内.我想要的是distributions同时插入内部subplots.

有人能帮忙吗?

python matplotlib python-3.x pandas seaborn

34
推荐指数
4
解决办法
2万
查看次数

pandas - 按行元素按另一个数据帧过滤数据帧

我有一个数据框df1,看起来像:

   c  k  l
0  A  1  a
1  A  2  b
2  B  2  a
3  C  2  a
4  C  2  d
Run Code Online (Sandbox Code Playgroud)

另一个叫做df2:

   c  l
0  A  b
1  C  a
Run Code Online (Sandbox Code Playgroud)

我想过滤df1只保留不在的值df2.要过滤的值应为as (A,b)(C,a)tuples.到目前为止,我尝试应用该isin方法:

d = df[~(df['l'].isin(dfc['l']) & df['c'].isin(dfc['c']))]
Run Code Online (Sandbox Code Playgroud)

除了在我看来太复杂,它返回:

   c  k  l
2  B  2  a
4  C  2  d
Run Code Online (Sandbox Code Playgroud)

但我期待:

   c  k  l
0  A  1  a
2  B  2  a
4  C  2 …
Run Code Online (Sandbox Code Playgroud)

python pandas

33
推荐指数
3
解决办法
3万
查看次数

pandas将列添加到groupby数据帧

我有这个简单的数据帧df:

df = pd.DataFrame({'c':[1,1,1,2,2,2,2],'type':['m','n','o','m','m','n','n']})
Run Code Online (Sandbox Code Playgroud)

我的目标是计算type每个的值c,然后添加一个大小为的列c.所以从:

In [27]: g = df.groupby('c')['type'].value_counts().reset_index(name='t')

In [28]: g
Out[28]: 
   c type  t
0  1    m  1
1  1    n  1
2  1    o  1
3  2    m  2
4  2    n  2
Run Code Online (Sandbox Code Playgroud)

第一个问题解决了.然后我还可以:

In [29]: a = df.groupby('c').size().reset_index(name='size')

In [30]: a
Out[30]: 
   c  size
0  1     3
1  2     4
Run Code Online (Sandbox Code Playgroud)

如何将size列直接添加到第一个数据框?到目前为止我用过map:

In [31]: a.index = a['c']

In [32]: g['size'] = g['c'].map(a['size'])

In [33]: …
Run Code Online (Sandbox Code Playgroud)

python pandas

12
推荐指数
2
解决办法
2万
查看次数

从pandas数据框中删除闰年

我有这个人.数据帧:

datetime
2012-01-01    125.5010
2012-01-02    125.5010
2012-01-03    125.5010
2012-02-04    125.5010
2012-02-05    125.5010
2012-02-29    125.5010
2012-02-28    125.5010
2016-01-07    125.5010
2016-01-08    125.5010
2016-02-29     81.6237
Run Code Online (Sandbox Code Playgroud)

我想删除对应于2月29日的所有行,导致foll.数据框:

datetime
2012-01-01    125.5010
2012-01-02    125.5010
2012-01-03    125.5010
2012-02-04    125.5010
2012-02-05    125.5010
2012-02-28    125.5010
2016-01-07    125.5010
2016-01-08    125.5010
Run Code Online (Sandbox Code Playgroud)

现在,我只是手动完成:

df.drop(df.index[['2012-02-29']]).我怎样才能使它适用于所有年份,而不必手动指定行索引.

python dataframe pandas

11
推荐指数
3
解决办法
5045
查看次数

合并数据帧列表以创建一个数据帧

我有18个数据框的列表:

dfList = [df1, df2, df3, df4, df5, df6.....df18]
Run Code Online (Sandbox Code Playgroud)

所有数据框都有一个共同的id列,因此很容易将它们与pd.merge 2一起连接在一起.有没有办法一次性加入它们,以便dfList作为单个数据帧返回?

python python-3.x pandas

11
推荐指数
1
解决办法
9517
查看次数

大数组之间的numpy boolean比较返回False而不是boolean数组

我刚遇到以下问题.从两个数组开始,执行布尔比较,如:

In [47]: a1 = np.random.randint(0,10,size=1000000)

In [48]: a2 = np.random.randint(0,10,size=1000000)

In [52]: a1[:,None] == a2
Out[52]: False
Run Code Online (Sandbox Code Playgroud)

返回布尔值而不是布尔数组,而:

In [62]: a1 = np.random.randint(0,10,size=10000)

In [63]: a2 = np.random.randint(0,10,size=10000)

In [64]: a1[:,None] == a2
Out[64]: 
array([[False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       ..., 
       [False, False, False, ..., False, False, False],
       [ True, False, False, ..., False, False, False],
       [False, False, False, ...,  True, False, False]], dtype=bool) …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

10
推荐指数
1
解决办法
1239
查看次数

pandas - 在DataFrame分组后仅保留True值

我一直在使用User_ID,DateTime对象和其他信息来处理DataFrame,如下面的摘录:

User_ID;Latitude;Longitude;Datetime
222583401;41.4020375;2.1478710;2014-07-06 20:49:20
287280509;41.3671346;2.0793115;2013-01-30 09:25:47
329757763;41.5453577;2.1175164;2012-09-25 08:40:59
189757330;41.5844998;2.5621569;2013-10-01 11:55:20
624921653;41.5931846;2.3030671;2013-07-09 20:12:20
414673119;41.5550136;2.0965829;2014-02-24 20:15:30
414673119;41.5550136;2.0975829;2014-02-24 20:16:30
414673119;41.5550136;2.0985829;2014-02-24 20:17:30
Run Code Online (Sandbox Code Playgroud)

我将用户分组为:

g = df.groupby(['User_ID','Datetime'])
Run Code Online (Sandbox Code Playgroud)

然后检查没有单个DataTime对象:

df = df.groupby('User_ID')['Datetime'].apply(lambda g: len(g)>1)
Run Code Online (Sandbox Code Playgroud)

我已经获得了以下布尔数据框架:

User_ID
189757330    False
222583401    False
287280509    False
329757763    False
414673119     True
624921653    False
Name: Datetime, dtype: bool
Run Code Online (Sandbox Code Playgroud)

这对于我的目的来说只保留User_ID为True掩码值.现在我只想保留与True值关联的User_ID值,并将它们写入新的DataFrame pandas.to_csv,例如.预期的DataFrame将仅包含具有多个DateTime对象的User_ID:

User_ID;Latitude;Longitude;Datetime
414673119;41.5550136;2.0965829;2014-02-24 20:15:30
414673119;41.5550136;2.0975829;2014-02-24 20:16:30
414673119;41.5550136;2.0985829;2014-02-24 20:17:30
Run Code Online (Sandbox Code Playgroud)

我怎样才能访问每个User_ID的布尔值?谢谢你的帮助.

python pandas

9
推荐指数
1
解决办法
7376
查看次数

如何从pandas groupby中的多个列中获取唯一值

从这个数据帧df开始:

df = pd.DataFrame({'c':[1,1,1,2,2,2],'l1':['a','a','b','c','c','b'],'l2':['b','d','d','f','e','f']})

   c l1 l2
0  1  a  b
1  1  a  d
2  1  b  d
3  2  c  f
4  2  c  e
5  2  b  f
Run Code Online (Sandbox Code Playgroud)

我想在c列上执行groupby 以获取l1l2列的唯一值.对于我可以做的一列:

g = df.groupby('c')['l1'].unique()
Run Code Online (Sandbox Code Playgroud)

正确返回:

c
1    [a, b]
2    [c, b]
Name: l1, dtype: object
Run Code Online (Sandbox Code Playgroud)

但使用:

g = df.groupby('c')['l1','l2'].unique()
Run Code Online (Sandbox Code Playgroud)

收益:

AttributeError: 'DataFrameGroupBy' object has no attribute 'unique'
Run Code Online (Sandbox Code Playgroud)

我知道我可以用(以及其他)获得两列的唯一值:

In [12]: np.unique(df[['l1','l2']])
Out[12]: array(['a', 'b', 'c', 'd', 'e', 'f'], dtype=object)
Run Code Online (Sandbox Code Playgroud)

有没有办法将此方法应用于groupby,以获得类似的东西:

c …
Run Code Online (Sandbox Code Playgroud)

python pandas

8
推荐指数
3
解决办法
1万
查看次数

标签 统计

python ×10

pandas ×9

dataframe ×2

python-3.x ×2

arrays ×1

matplotlib ×1

numpy ×1

python-3.5 ×1

seaborn ×1