javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

spring-mvc

reflection

javascript-objects

html5

analytics

node.js

performance

branch-prediction

git-commit

git-revert

python-如何向熊猫数据框添加额外的行

这个问题已经在这里有了答案:

  • 向pandas DataFrame添加一行 19个答案

如果我有一个空的数据框:

columns = ['Date', 'Name', 'Action','ID']
df = pd.DataFrame(columns=columns) 

有没有一种方法可以向此新创建的数据框追加新行? 目前,我必须创建一个字典,将其填充,然后将字典附加到最后的数据框中。 有更直接的方法吗?

trans by 2020-08-12T09:49:00Z

python-ImportError:没有名为“ pandas.core.internals.managers”的模块; 'pandas.core.internals'不是一个包

当我尝试读取由以前的熊猫版本保存的泡菜文件时,结果为ImportError

ImportError:没有名为“ pandas.core.internals.managers”的模块; 'pandas.core.internals'不是一个包

在stackoverflow上没有遇到任何问题,因此我想针对这个特定问题分享我的解决方案。

trans by 2020-08-12T01:20:55Z

python-根据条件获取数据帧行数

我想获取基于条件选择的数据帧行数。 我尝试了以下代码。

print df[(df.IP == head.idxmax()) & (df.Method == 'HEAD') & (df.Referrer == '"-"')].count()

输出:

IP          57
Time        57
Method      57
Resource    57
Status      57
Bytes       57
Referrer    57
Agent       57
dtype: int64

输出显示数据帧中每一列的计数。 相反,我需要获得满足以上所有条件的单一计数? 这该怎么做? 如果您需要有关我的数据框的更多说明,请告诉我。

trans by 2020-08-11T21:20:10Z

python-用pandas dataframe绘制多行

我有一个如下数据框

   color  x   y
0    red  0   0
1    red  1   1
2    red  2   2
3    red  3   3
4    red  4   4
5    red  5   5
6    red  6   6
7    red  7   7
8    red  8   8
9    red  9   9
10  blue  0   0
11  blue  1   1
12  blue  2   4
13  blue  3   9
14  blue  4  16
15  blue  5  25
16  blue  6  36
17  blue  7  49
18  blue  8  64
19  blue  9  81

我最终想要两行,一条蓝色,一条红色。 红线应基本上为y = x,蓝线应为y = x ^ 2

当我执行以下操作时:

df.plot(x='x', y='y')

输出是这样的:

有没有办法让大熊猫知道有两套? 并将它们相应地分组。 我希望能够将“颜色”列指定为集合区分符

trans by 2020-08-10T23:50:16Z

python-在熊猫csv中指定数据类型读取

我刚开始使用Pandas,正在使用3005524316772631551552方法读取csv文件。 我遇到的困难是阻止熊猫将我的电话号码转换为大数字,而不是将它们保留为字符串。 我定义了一个转换器,该转换器只保留数字,但后来仍然转换为数字。 当我更改转换器以在电话号码前加一个“ z”时,它们就停留在字符串上。 有什么办法可以保持它们的字符串而不修改字段的值?

trans by 2020-08-10T17:35:15Z

Python:Pandas根据字符串长度过滤字符串数据

我喜欢过滤掉字符串长度不等于10的数据。

如果我尝试过滤掉列A或B的字符串长度不等于10的任何行,则尝试这样做。

df=pd.read_csv('filex.csv')
df.A=df.A.apply(lambda x: x if len(x)== 10 else np.nan)
df.B=df.B.apply(lambda x: x if len(x)== 10 else np.nan)
df=df.dropna(subset=['A','B'], how='any')

这工作缓慢,但正在工作。

但是,当A中的数据不是字符串而是数字(在read_csv读取输入文件时解释为数字)时,有时会产生错误。

  File "<stdin>", line 1, in <lambda>
TypeError: object of type 'float' has no len()

我相信应该有更高效,更优雅的代码来代替。


根据下面的答案和评论,我找到的最简单的解决方案是:

df=df[df.A.apply(lambda x: len(str(x))==10]
df=df[df.B.apply(lambda x: len(str(x))==10]

要么

df=df[(df.A.apply(lambda x: len(str(x))==10) & (df.B.apply(lambda x: len(str(x))==10)]

or

df=df[(df.A.astype(str).str.len()==10) & (df.B.astype(str).str.len()==10)]
trans by 2020-08-09T12:58:42Z

python-将多个JSON记录读取到Pandas数据框中

我想知道是否存在一种将多记录JSON文件(每行是一个JSON dict)读入熊猫数据帧的内存有效方式。 下面是带有工作解决方案的2行示例,我可能需要非常多的记录。 示例用途是处理Hadoop Pig JSonStorage函数的输出。

import json
import pandas as pd

test='''{"a":1,"b":2}
{"a":3,"b":4}'''
#df=pd.read_json(test,orient='records') doesn't work, expects []

l=[ json.loads(l) for l in test.splitlines()]
df=pd.DataFrame(l)
trans by 2020-08-09T10:08:16Z

python-如何将列和行的pandas DataFrame子集转换为numpy数组?

我想知道是否有一种更简单,内存效率更高的方法从pandas DataFrame中选择行和列的子集。

例如,给定此数据框:

df = DataFrame(np.random.rand(4,5), columns = list('abcde'))
print df

          a         b         c         d         e
0  0.945686  0.000710  0.909158  0.892892  0.326670
1  0.919359  0.667057  0.462478  0.008204  0.473096
2  0.976163  0.621712  0.208423  0.980471  0.048334
3  0.459039  0.788318  0.309892  0.100539  0.753992

我只希望其中列'c'的值大于0.5的那些行,但是对于那些行,我只需要列'b'和'e'。

这是我想出的方法-也许有更好的“熊猫”方式?

locs = [df.columns.get_loc(_) for _ in ['a', 'd']]
print df[df.c > 0.5][locs]

          a         d
0  0.945686  0.892892

我的最终目标是将结果转换为numpy数组,然后传递给sklearn回归算法,因此我将使用上面的代码,如下所示:

training_set = array(df[df.c > 0.5][locs])

...这让我很烦,因为我最终在内存中存储了一个巨大的数组副本。 也许还有更好的方法吗?

trans by 2020-08-09T01:24:17Z

python-从pandas DataFrame导出LaTeX表

是否有一种简单的方法可以将数据帧(甚至其中的一部分)导出到LaTeX?

我在Google中搜索,仅能使用asciitables找到解决方案。

trans by 2020-08-08T22:15:05Z

python-如何使用熊猫从数据框中删除列?

我读了我的数据

import pandas as pd
df = pd.read_csv('/path/file.tsv', header=0, delimiter='\t')
print df

并获得:

          id    text
0    361.273    text1...
1    374.350    text2...
2    374.350    text3...

如何从上述数据框中删除id列? 我尝试了以下方法:

import pandas as pd
df = pd.read_csv('/path/file.tsv', header=0, delimiter='\t')
print df.drop('id', 1)

但这引发了这个异常:

ValueError: labels ['id'] not contained in axis
trans by 2020-08-08T17:24:12Z

python-Spark DataFrame方法“ toPandas”实际上在做什么?

我是Spark-DataFrame API的初学者。

我使用此代码将制表符分隔的csv加载到Spark Dataframe中

lines = sc.textFile('tail5.csv')
parts = lines.map(lambda l : l.strip().split('\t'))
fnames = *some name list*
schemaData = StructType([StructField(fname, StringType(), True) for fname in fnames])
ddf = sqlContext.createDataFrame(parts,schemaData)

假设我用Spark从新文件中创建了DataFrame,并使用内置方法toPandas()将其转换为熊猫,

  • 是否将Pandas对象存储到本地内存?
  • 熊猫的低级计算是否全部由Spark处理?
  • 它是否公开了所有熊猫数据框功能?(我想是的)
  • Can I convert it toPandas and just be done with it, without so much touching DataFrame API?
trans by 2020-08-07T07:57:33Z

python-对于Pandas DataFrame,使用方括号或点访问列之间有什么区别?

即:

import pandas

d = {'col1': 2, 'col2': 2.5}
df = pandas.DataFrame(data=d, index=[0])

print(df['col2'])
print(df.col2)

输出是相同的。

这个答案适用于这种情况吗?

Python中的方括号和点表示法之间有什么区别?

trans by 2020-08-07T01:12:56Z

python-列上的总和和百分比?

我有一个DataFrame像这样:

df.cumsum():

 fruit    val1 val2
0 orange    15    3
1 apple     10   13
2 mango     5    5 

如何获得熊猫仅在df.cumsum()上给我累计和百分比的列?

所需的输出:

df.cumsum():

 fruit    val1 val2   cum_sum    cum_perc
0 orange    15    3    15          50.00
1 apple     10   13    25          83.33
2 mango     5    5     30          100.00

我尝试了df.cumsum(),但它给了我这个错误:

TypeError:输入类型不支持ufunc'isnan',并且根据强制转换规则“ safe”,不能将输入安全地强制转换为任何受支持的类型

trans by 2020-08-06T22:59:13Z

熊猫枢纽警告有关索引上重复的条目

pivot方法的Pandas文档中,我们具有:

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

我的foo的结构如下:

   name   id     x
----------------------
0  john   1      0
1  john   2      0
2  mike   1      1
3  mike   2      0

我想要这样的东西:

      1    2   # (this is the id as columns)
----------------------
mike  0    0   # (and this is the 'x' as values)
john  1    0

但是当我运行foo方法时,它的意思是:

*** ReshapeError: Index contains duplicate entries, cannot reshape

这没有意义,即使在示例中,在foo列上也有重复的条目。 我将name列用作数据透视表的索引,即pivot方法调用的第一个参数。

trans by 2020-08-06T21:01:28Z

python-如何从包含列表的熊猫列中进行一次编码?

我想将由元素列表组成的pandas列分解为与唯一元素一样多的列(即one-hot-encode它们(值1表示行中存在的给定元素,如果值不存在则值为0)。

例如,以数据框df

Col1   Col2         Col3
 C      33     [Apple, Orange, Banana]
 A      2.5    [Apple, Grape]
 B      42     [Banana] 

我想将其转换为:

df

Col1   Col2   Apple   Orange   Banana   Grape
 C      33     1        1        1       0
 A      2.5    1        0        0       1
 B      42     0        0        1       0

如何使用pandas / sklearn实现此目的?

trans by 2020-08-06T13:54:08Z

python-熊猫识别的所有dtypes是什么?

对于大熊猫,有人会知道,除了

(i)pandasdtype(以及object的其他变体,例如float32int8等)

(ii)pandas

(iii)pandasdtype

例如字符串列,始终具有dtypepandas

或者,我想知道,除了上面的列表中的(i),(ii)和(iii)之外,是否还有其他数据类型,使得pandas不是dtype还是object

trans by 2020-08-06T06:02:05Z

datetime-使用Python在Pandas数据框中创建星期几列

使用Python在Pandas数据框中创建星期几列

我想将csv文件读取到pandas数据框中,将一列日期从字符串格式解析为date对象,然后生成一个新列以指示星期几。

这就是我正在尝试的:

我想做的是这样的:

import pandas as pd

import csv

df = pd.read_csv('data.csv', parse_dates=['date']))

df['day-of-week'] = df['date'].weekday()


AttributeError: 'Series' object has no attribute 'weekday'

谢谢您的帮助。詹姆士

trans by 2020-08-05T16:32:33Z

python-将Pandas数据框转换为csv字符串

这是我要获取的示例:

我有:

import pandas as pd 
df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]})

我的目标是:

',A,B\n0,0,1\n1,1,6\n'

我可以通过懒惰和恐怖来实现:

df.to_csv('temp.csv') # create unnecessary file
body = open('temp.csv').read()

同样to_string()方法看起来非常有前途; 但是,我能想到的最好的方法是:

body = df.to_string()[1:].replace('  ', ',') + '\n'

这不会创建不必要的文件,但是看起来很草率,也许不是很可靠。

我是否缺少一个更简单的解决方案?

trans by 2020-08-03T11:19:49Z

numpy-Python Pandas-将某些列类型更改为类别

我已将以下CSV文件输入到iPython Notebook:

public = pd.read_csv("categories.csv")
public

我也将pdas导入为pd,将numpy导入为np,将matplotlib.pyplot导入为plt。 存在以下数据类型(以下是摘要-大约有100列)

In [36]:   public.dtypes
Out[37]:   parks          object
           playgrounds    object
           sports         object
           roading        object               
           resident       int64
           children       int64

我想将“公园”,“运动场”,“运动”和“道路”更改为类别(它们具有李克特量表响应-尽管每一列都有不同类型的李克特响应(例如,一个人“强烈同意”,“同意” 等),另一个具有“非常重要”,“重要”等),其余部分保留为int64。

我能够创建一个单独的数据框public1,并使用以下代码将其中一列更改为类别类型:

public1 = {'parks': public.parks}
public1 = public1['parks'].astype('category')

但是,当我尝试使用此代码一次更改数字时,我没有成功:

public1 = {'parks': public.parks,
           'playgrounds': public.parks}
public1 = public1['parks', 'playgrounds'].astype('category')

尽管如此,我不想仅使用类别列创建单独的数据框。 我希望它们在原始数据框中更改。

我尝试了多种方法来实现这一目标,然后在此处尝试了以下代码:Pandas:更改列的数据类型...

public[['parks', 'playgrounds', 'sports', 'roading']] = public[['parks', 'playgrounds', 'sports', 'roading']].astype('category')

并得到以下错误:

 NotImplementedError: > 1 ndim Categorical are not supported at this time

有没有一种方法可以将“公园”,“游乐场”,“运动”,“道路”更改为类别(这样就可以分析李克特量表的响应),剩下“居民”和“孩子”(以及其他94列 是字符串,整数+浮点数)吗? 还是有更好的方法来做到这一点? 如果有人有任何建议和/或反馈,我将不胜感激..am慢慢地秃头撕开我的头发!

提前谢谢了。

编辑添加-我正在使用Python 2.7。

trans by 2020-08-02T16:21:59Z

python-如何用z替换熊猫数据框中的负数

我想知道是否有某种方式将所有DataFrame负数替换为零?

trans by 2020-07-31T02:23:50Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共25页