小编Vai*_*ali的帖子

如何将计算列添加到 Pandas 列中的 Dataframe 计数频率

我有这样的数据框:

   county
1     N
2     N
3     C
4     N
5     S
6     N
7     N
Run Code Online (Sandbox Code Playgroud)

我想达到的是:

    county  frequency
1   N       5
2   N       5
3   C       1
4   N       5
5   S       1
6   N       5
7   N       5
Run Code Online (Sandbox Code Playgroud)

有没有可能直接添加这样的列而没有任何中间 df. 我知道我可以使用 group 和 size 函数创建另一个 df 并合并这两个数据帧。Howewer,我想知道是否有任何功能可以在没有任何中间 df 的情况下启用此类解决方案,但可能使用“应用”和某些功能或 Lamba?

python countif dataframe pandas

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

使用 pandas 将字符串转换为日期时间:类型错误:<class 'list'> 无法转换为日期时间

我有一个 Pandas Dataframe,其日期列具有以下结构:

352    [2012-01-12 05:04:58]
353    [2008-07-16 20:38:21]
354    [2009-05-12 01:05:48]
355    [2012-01-12 05:04:58]
356    [2018-01-05 15:06:41]
357    [2017-07-17 22:03:43]

Name: Date, Length: 358, dtype: object
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这些是带有 的“对象”。我想将它们转换为 Datetime 对象。所以我使用了 pandas 函数:

pd.to_datetime(df['Date'])
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

Traceback (most recent call last):
  File "/anaconda3/envs/py35thesis/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-185-adf5e63a666b>", line 1, in <module>
    pd.to_datetime(df['Date'])
  File "/anaconda3/envs/py35thesis/lib/python3.5/site-packages/pandas/core/tools/datetimes.py", line 451, in to_datetime
    values = _convert_listlike(arg._values, True, format)
  File "/anaconda3/envs/py35thesis/lib/python3.5/site-packages/pandas/core/tools/datetimes.py", line 368, in _convert_listlike
    require_iso8601=require_iso8601
  File "pandas/_libs/tslib.pyx", line 492, in pandas._libs.tslib.array_to_datetime …
Run Code Online (Sandbox Code Playgroud)

python datetime pandas

6
推荐指数
1
解决办法
7387
查看次数

如何以不同的速率从 Pandas 数据框中对每个组进行采样

我有一个数据框,其中包含有关我希望从中生成样本的总体信息。我还有一个数据框sample_info,它详细说明了population我的示例中需要的数据框中每个组的数量。我已经开发了一些代码来实现我的需要,但鉴于我正在使用的大型数据集,它的运行速度比我想要的要慢。

有没有办法对总体框架进行分组并将抽样应用于组,而不是像我在下面所做的那样循环遍历它们?

import pandas as pd

population = pd.DataFrame([[1,True],[1,False],[1,False],[2,True],[2,True],[2,False],[2, True]], columns = ['Group ID','Response'])

    Group ID    Response
0   1           True
1   1           False
2   1           False
3   2           True
4   2           True
5   2           False
6   2           True

sample_info = pd.DataFrame([[1,5],[2,6]], columns = ['Group ID','Sample Size'])

output = pd.DataFrame(columns = ['Group ID','Response'])

    Group ID    Sample Size
0   1           5
1   2           6


for index, row in sample_info.iterrows():    
        output = output.append(population.loc[population['Group ID'] == row['Group ID']].sample(n=row['Sample Size'], replace …
Run Code Online (Sandbox Code Playgroud)

python sampling pandas

6
推荐指数
1
解决办法
1165
查看次数

pandas 图中的次要 y 轴限制

有没有办法在 pandas df.plot 中设置辅助 Y 轴的限制

我有以下情节陈述。有没有办法简单地为辅助轴添加 ylim ?如“ secondary_ylim=(0,1)”

df[["Date","Col1","Col2"]].plot(x="date",y=["Col1","Col2"],secondary_y="Col2",ylim = (0,1))
Run Code Online (Sandbox Code Playgroud)

plot pandas

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

熊猫:如何为系列中的每个值重复数据帧?

我有一个数据帧(df):

A B
1 a
2 b
3 c
Run Code Online (Sandbox Code Playgroud)

还有一系列:S = pd.Series(['x','y','z'])我想为系列中的每个值重复数据帧df.预期的结果是这样的:结果:

S A B
x 1 a
y 1 a
z 1 a
x 2 b
y 2 b
z 2 b
x 3 c
y 3 c
z 3 c
Run Code Online (Sandbox Code Playgroud)

我如何实现这种输出?我正在考虑合并或加入,但合并会给我一个内存错误.我正在处理一个相当大的数据帧和系列.谢谢!

python merge numpy dataframe pandas

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

熊猫:根据条件删除多行

下面是pandas dataframe我的一个子集,我试图根据某些条件删除多行.

  code1 code2 grp1 grp2  dist_km
0  M001  M002  AAA  AAA      112
1  M001  M003  AAA  IHH      275
2  M002  M005  AAA  XXY      150
3  M002  M004  AAA  AAA       65
4  M003  M443  IHH  GRR       50
5  M003  M667  IHH  IHH      647
6  M003  M664  IHH  FFG      336
Run Code Online (Sandbox Code Playgroud)

所以我只想保持行的位置grp1grp2每个行的相同,code1但只有dist_km那个特定的最小值code1.

对于上面的示例,仅保留以下行:

  code1 code2 grp1 grp2  dist_km
0  M001  M002  AAA  AAA      112
3  M002  M004  AAA  AAA       65 …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

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

将列值拆分为2个新列 - Python Pandas

我有一个包含列'name'的数据框.像'詹姆斯卡梅隆'这样的价值观.我想将它拆分为2个新列'First_Name'和'Last_Name',但数据中没有分隔符,所以我不太清楚如何.我意识到'詹姆斯'处于位置[0]并且'卡梅隆'处于位置[1],但我不确定你是否能够在没有分隔符的情况下认出

df = pd.DataFrame({'name':['James Cameron','Martin Sheen'],
               'Id':[1,2]})
df
Run Code Online (Sandbox Code Playgroud)

编辑:

对于我提供的数据框架,Vaishali的回答完美无缺.我创建了该数据帧作为示例.我的真实代码看起来像这样"

data[['First_Name','Last_Name']] = data.director_name.str.split(' ', expand = True)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是一个错误:

'Columns must be same length as key'
Run Code Online (Sandbox Code Playgroud)

该列保持与我的示例相同的值.有什么建议?

谢谢

python pandas

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

使用 Pandas 读取制表符分隔的字段,某些行具有多个制表符

我正在尝试使用 Pandas 读取制表符分隔的 txt 文件。该文件如下所示:

数据文件样本

14.38   14.21   0.8951  5.386   3.312   2.462   4.956   1<p>
14.69   14.49   0.8799  5.563   3.259   3.586   5.219   1<p>
14.11   14.12   0.8911  5.422   3.302   2.723  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   &nbsp;&nbsp;&nbsp;       5        1<p>
Run Code Online (Sandbox Code Playgroud)

有些行有额外的标签。如果我使用 read_csv 或 read_fwf,并指定 sep='\t'。我得到的结果是这样的:

d

0   15.26\t14.84\t0.871\t5.763\t3.312\t2.221\t5.22\t1<p>
1   14.88\t14.57\t0.8811\t5.554\t3.333\t1.018\t4.9 <p>
Run Code Online (Sandbox Code Playgroud)

对于我可以指定哪些参数来处理这个问题,您有什么建议吗?谢谢。

解决方案:

使用 pd.read_csv(filename, delim_whitespace=True)

pandas

2
推荐指数
1
解决办法
2030
查看次数

从熊猫数据框中删除停用词

我有下面的脚本 & 在最后一行,我试图从名为“响应”的列中的字符串中删除停用词。

问题是,不是“有点恼火”变成“有点恼火”,它实际上甚至会丢弃字母 - 因此,有点恼火会变得有点恼火。因为'a'是一个停用词

任何人都可以给我建议吗?

   import pandas as pd
   from textblob import TextBlob
   import numpy as np
   import os
   import nltk
   nltk.download('stopwords')
   from nltk.corpus import stopwords
   stop = stopwords.words('english')

   path = 'Desktop/fanbase2.csv'
   df = pd.read_csv(path, delimiter=',', header='infer', encoding = "ISO-8859-1")
   #remove punctuation
   df['response'] = df.response.str.replace("[^\w\s]", "")
   #make it all lower case
   df['response'] = df.response.apply(lambda x: x.lower())
   #Handle strange character in source
   df['response'] = df.response.str.replace("‰Ûª", "''")

   df['response'] = df['response'].apply(lambda x: [item for item in x if item not in …
Run Code Online (Sandbox Code Playgroud)

python nltk pandas

2
推荐指数
1
解决办法
8532
查看次数

如果行等于python中的值,则打印列名称

如果值= 1,我如何在行之间进行迭代并在一列中打印列名称

mydata = [{'a' : '0', 'b': 1, 'c': 0}, {'a' : 1, 'b': 0, 'c':1}, {'a' : '0', 'b': 1, 'c':1}] 
df = pd.DataFrame(mydata)

a   b   c   Result 
0   1   0   b 
1   0   1   a , c
0   1   1   b , c
Run Code Online (Sandbox Code Playgroud)

结果仅显示等于1的列名称

python numpy pandas

2
推荐指数
1
解决办法
170
查看次数

如何从Python数据框中删除方括号

在此输入图像描述我创建了一个 pandas 数据框,并将我的信息作为 DF 存储在给定的框架中

当我打印 df 时,我得到的输出为

Number  changes                                       Id
300     ['Body Weight', 'Color']                     12345
400                                                  32145
500                                                  45698
600                                                  74125
700     Body Weight                                  96325
800     Body Weight                                   44444
900     ['band Voltage Rating', 'Body Weight']       963258
1000                                                 666666
Run Code Online (Sandbox Code Playgroud)

在某些地方对于列的更改有“[”和“]”。请告诉我如何删除这些括号?

python pandas

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

标签 统计

pandas ×11

python ×9

dataframe ×2

numpy ×2

countif ×1

datetime ×1

merge ×1

nltk ×1

pandas-groupby ×1

plot ×1

sampling ×1