小编ALo*_*llz的帖子

在Python中合并DataFrame而不复制列

我正在尝试基于公共列合并多个DataFrame.这将在循环中完成,原始DataFrame可能没有所有列,因此需要外部合并.但是,当我在几个不同的DataFrames列上执行此操作时,使用后缀_x和_y复制.我正在寻找一个填充数据的DataFrame,并且只有在以前不存在的情况下才添加列.

df1=pd.DataFrame({'Company Name':['A','B','C','D'],'Data1':[1,34,23,66],'Data2':[13,54,5354,443]})
      Company Name  Data1  Data2
0            A      1     13
1            B     34     54
2            C     23   5354
3            D     66    443
Run Code Online (Sandbox Code Playgroud)

第二个DataFrame,包含一些公司的附加信息:

pd.DataFrame({'Company Name':['A','B'],'Address':  ['str1', 'str2'], 'Phone': ['str1a', 'str2a']})

  Company Name Address  Phone
0            A    str1  str1a
1            B    str2  str2a
Run Code Online (Sandbox Code Playgroud)

如果我想组合这两个,它将使用on = Column成功合并为一个:

df1=pd.merge(df1,df2, on='Company Name', how='outer')

  Company Name  Data1  Data2 Address  Phone
0            A      1     13    str1  str1a
1            B     34     54    str2  str2a
2            C     23   5354     NaN    NaN
3            D     66    443     NaN    NaN …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

5
推荐指数
1
解决办法
172
查看次数

线性拟合 pandas.datetime64 值?

我有一个数据框,其中有两列(年龄,日期),指示一个人的年龄和当前日期。我想根据该数据估算出出生日期。我想拟合一个线性模型并找到截取,但它不能开箱即用。Pandas 不再支持该ols()功能。

import pandas as pd
import seaborn as sns
from pandas import Timestamp

age = [30, 31, 31, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, 34]
date = [Timestamp('2001-02-10 00:01:00'),
 Timestamp('2001-11-12 00:01:00'),
 Timestamp('2002-02-27 00:01:00'),
 Timestamp('2002-07-05 00:01:00'),
 Timestamp('2002-07-20 00:01:00'),
 Timestamp('2002-08-15 00:01:00'),
 Timestamp('2002-09-08 00:01:00'),
 Timestamp('2002-10-15 00:01:00'),
 Timestamp('2002-12-21 00:01:00'),
 Timestamp('2003-04-04 00:01:00'),
 Timestamp('2003-07-29 00:01:00'),
 Timestamp('2003-08-11 00:01:00'),
 Timestamp('2004-02-28 00:01:00'),
 Timestamp('2005-01-11 00:01:00'),
 Timestamp('2005-01-12 00:01:00')]

df = pd.DataFrame({'age': age, 'date': date})

sns.regplot(df.age, df.date)
Run Code Online (Sandbox Code Playgroud)

抛出错误:

类型错误:此数据类型不允许缩减操作“mean”

将数据转换为可拟合的数据并将其转换回日期并估计置信区间的最佳方法是什么?是否有任何软件包可以开箱即用地处理 pandas.Timestamps ?例如 scikit-learn?

python pandas scikit-learn seaborn sklearn-pandas

4
推荐指数
1
解决办法
1945
查看次数

按列表大小排序Pandas数据帧而不是AZ

我有一个如下所示的数据框:

username          group
user1             [A]
user2             [B, C]
user3             [A, B, C]
user4             [A, B]
Run Code Online (Sandbox Code Playgroud)

我希望结果看起来像这样:

username          group
user3             [A, B, C]
user4             [A, B]
user2             [B, C]
user1             [A]
Run Code Online (Sandbox Code Playgroud)

我查找了sort_values的文档,它似乎主要涵盖0-9或AZ排序..提前感谢

python pandas

4
推荐指数
1
解决办法
427
查看次数

Pandas sort columns by name

I have the following dataframe, where I would like to sort the columns according to the name.

1 | 13_1 | 13_10| 13_2  | 2   | 3
9 |  31  | 2    |  1    | 3   | 4
Run Code Online (Sandbox Code Playgroud)

I am trying to sort the columns in the following way:

1 |  2  | 3    | 13_1  | 13_2  | 13_10
9 |  3  | 4    |  31   |  1    | 2
Run Code Online (Sandbox Code Playgroud)

I've been trying to solve this using df.sort_index(axis=1, inplace=True) …

python pandas

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

如何使用 groupby.first() 和转换函数

我想使用 groupby.first() 函数来查找组的第一个非空值并将该值转换为组中的每一行。

我尝试了以下代码:

import pandas as pd
import numpy as np
raw_data = {'col1': ['a','a','a','b','b','b','b','b','b','c','c','c','c','c'],
            'col2': [np.nan,np.nan,6,0,2,0,8,2,2,3,0,0,4,5]}
df=pd.DataFrame(raw_data)
df['col3'] = df.groupby('col1')['col2'].transform(lambda x: x.first())
df
Run Code Online (Sandbox Code Playgroud)

我想得到一个看起来像这样的 df:

  col1 col2 col3
    a NaN   6
    a NaN   6
    a 6     6
    b 0     0
    b 2     0
    b 0     0
    b 8     0
    b 2     0
    b 2     0
    c 3     3
    c 0     3
    c 0     3
    c 4     3
    c 5     3
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:TypeError: first() missing 1 required positional argument: 'offset' …

python pandas

4
推荐指数
1
解决办法
985
查看次数

如何在python中转换或融化列?

我有这个表格,但我想把它做成一个简单的表格。现有的表格是这样的:

group      mp_current   mh_current   mp_total   mh_total 
contractor       25         4825        0          0
Run Code Online (Sandbox Code Playgroud)

我想将表格转换成这种形式:

group        mp    mh    period
contractor   25   4825   current
contractor   0      0    total
Run Code Online (Sandbox Code Playgroud)

我将有一个专门用于 mp 和 mh 的列,还有一个额外的列作为周期列。

我如何在 python 中执行此操作?

python transform pandas

4
推荐指数
1
解决办法
47
查看次数

Pandas:将日期列剪切为期间日期组/数据箱

我有一个数据框如下:

df = pd.DataFrame({'Id': ['abs1', 'abs2', 'abs3', 'plo2', '201805', '201806', '202011', 'pctx1'],
                   'Date': ['2021-06-15', '2021-06-13', '2021-06-07', '2021-05-30',
                            '2021-05-12', '2021-04-28', '2021-04-15', '2021-02-01']})
Run Code Online (Sandbox Code Playgroud)

我希望将日期列分成几个组,在一个新列中,称为Date_Bin,规则是:从今天的日期开始,如果日期中的值小于7天,那么新列中的值将是“最后7天”天”,如果该值距离今天小于 14 天且大于 7 天,则值为“7 到 14 天”,如果该值小于 30 天且大于 14 天,则值为“14 到 14 天” 30天,30到60天,60到90天,90天以上都是同样的逻辑。理想的输出是这样的:

       Id        Date           Date_Bin
0    abs1  2021-06-15        last 7 days
1    abs2  2021-06-13        last 7 days
2    abs3  2021-06-07       7 to 14 days
3    plo2  2021-05-30      14 to 30 days
4  201805  2021-05-10      30 to 60 days
5  201806  2021-04-28      30 to 60 days …
Run Code Online (Sandbox Code Playgroud)

datetime pandas pandas-groupby pandas-timeindex

4
推荐指数
1
解决办法
1835
查看次数

熊猫:如何绘制电影计数的饼图与熊猫中的IMDB电影类型?

我有以下数据集:

import pandas as pd
import numpy as np 
%matplotlib inline

df = pd.DataFrame({'movie' : ['A', 'B','C','D'], 
                   'genres': ['Science Fiction|Romance|Family', 'Action|Romance',
                              'Family|Drama','Mystery|Science Fiction|Drama']},
                  index=range(4))
df
Run Code Online (Sandbox Code Playgroud)

我的尝试

# Parse unique genre from all the movies
gen = []
for g in df['genres']:
    gg = g.split('|')
    gen = gen + gg
    gen = list(set(gen))

print(gen)

df['genres'].value_counts().plot(kind='pie')
Run Code Online (Sandbox Code Playgroud)

我有这个图像: 在此输入图像描述

但我想为每个单独的类型饼图.

我们如何获得每种独特类型的电影数量类型?

python plot imdb matplotlib pandas

3
推荐指数
2
解决办法
956
查看次数

Pandas按照列的值排序每组中的前N个记录

import pandas as pd
d = {
    'resource': [1,2,3,4,5,6,7], 
    'branch': ['a', 'b', 'c', 'a', 'a', 'c', 'b'],
    'utilization': [0.7, 0.76, 0.9, 0.3, 0.55, 0.87, 0.71]
}
df = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)

我需要通过分支显示前2个使用的资源

像这样的东西:

df.groupby('branch')[['resource', 'utilization']].nlargest(2, 'utilization')
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

f = lambda x: x.sort_values('utilization', ascending=False)
df.groupby('branch', sort=False).apply(f).nlargest(3, 'utilization')
Run Code Online (Sandbox Code Playgroud)

但是当我在每组中需要前N时,它会让我在所有记录中排名前三

        resource    branch  utilization
branch              
c   2          3         c  0.90
    5          6         c  0.87
b   1          2         b  0.76
Run Code Online (Sandbox Code Playgroud)

pandas pandas-groupby

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

如何在Pandas Groupby中合并连接的字符串

我试图弄清楚如何计算2个字符串的给定组合,而不管哪个字符串是第一/第二。

这是我的代码:

import pandas as pd

mylist = [[('Smith JR', 'Kim YY'), ('Smith JR', 'Ron AA'), ('Kim YY', 'Ron AA')],
          [('Kim YY', 'Smith JR')], [('Smith JR', 'Ron AA')]]

flat_list = [item for sublist in mylist for item in sublist]

df = pd.DataFrame(flat_list, columns=["From", "To"])
df_graph = df.groupby(["From", "To"]).size().reset_index()
df_graph.columns = ["From", "To", "Count"]

print(df_graph)
Run Code Online (Sandbox Code Playgroud)

这使:

       From        To  Count
0    Kim YY    Ron AA      1
1    Kim YY    Smith JR    1
2  Smith JR    Kim YY      1
3  Smith JR    Ron …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

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