相关疑难解决方法(0)

如何迭代Pandas中的DataFrame中的行?

我有一只DataFrame熊猫:

import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df
Run Code Online (Sandbox Code Playgroud)

输出:

   c1   c2
0  10  100
1  11  110
2  12  120
Run Code Online (Sandbox Code Playgroud)

现在我想迭代这个帧的行.对于每一行,我希望能够通过列的名称访问其元素(单元格中的值).例如:

for row in df.rows:
   print row['c1'], row['c2']
Run Code Online (Sandbox Code Playgroud)

是否有可能在熊猫中做到这一点?

我发现了类似的问题.但它没有给我我需要的答案.例如,建议使用:

for date, row in df.T.iteritems():
Run Code Online (Sandbox Code Playgroud)

要么

for row in df.iterrows():
Run Code Online (Sandbox Code Playgroud)

但我不明白row对象是什么以及如何使用它.

python rows dataframe pandas

1551
推荐指数
28
解决办法
199万
查看次数

创建一个空的Pandas DataFrame,然后填充它?

我从这里的pandas DataFrame文档开始:http://pandas.pydata.org/pandas-docs/stable/dsintro.html

我想迭代地使用时间序列计算中的值填充DataFrame.基本上,我想用列A,B和时间戳行初始化DataFrame,全部为0或全部为NaN.

然后,我会添加初始值并检查此数据,计算前一行中的新行,row[A][t] = row[A][t-1]+1或者说左右.

我目前正在使用下面的代码,但我觉得它有点难看,必须有一种方法可以直接使用DataFrame,或者只是更好的方式.注意:我使用的是Python 2.7.

import datetime as dt
import pandas as pd
import scipy as s

if __name__ == '__main__':
    base = dt.datetime.today().date()
    dates = [ base - dt.timedelta(days=x) for x in range(0,10) ]
    dates.sort()

    valdict = {}
    symbols = ['A','B', 'C']
    for symb in symbols:
        valdict[symb] = pd.Series( s.zeros( len(dates)), dates )

    for thedate in dates:
        if thedate > dates[0]:
            for symb in valdict:
                valdict[symb][thedate] = 1+valdict[symb][thedate - dt.timedelta(days=1)]

    print valdict
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

381
推荐指数
4
解决办法
105万
查看次数

如何找到已安装的pandas版本

我遇到了一些熊猫功能问题.如何查看我的安装版本是什么?

python pandas

220
推荐指数
6
解决办法
23万
查看次数

在pandas数据帧中插入一行

我有一个数据帧..

s1 = pd.Series([5, 6, 7])
s2 = pd.Series([7, 8, 9])

df = pd.DataFrame([list(s1), list(s2)],  columns =  ["A", "B", "C"])

   A  B  C
0  5  6  7
1  7  8  9

[2 rows x 3 columns]
Run Code Online (Sandbox Code Playgroud)

我需要添加第一行[2,3,4]才能获得..

   A  B  C
0  2  3  4
1  5  6  7
2  7  8  9
Run Code Online (Sandbox Code Playgroud)

我已经尝试了append()和concat()函数,但不知怎的,我找不到正确的方法如何做到这一点.

有任何想法吗?有没有直接的方法如何添加/插入数据帧系列?

python pandas

92
推荐指数
9
解决办法
28万
查看次数

为什么python的list.append()方法的时间复杂度为O(1)?

正如TimeComplexity文档中所见,Python的list类型实现使用数组.

因此,如果正在使用数组并且我们做了一些追加,最终您将不得不重新分配空间并将所有信息复制到新空间.
毕竟,怎么可能是O(1)最坏的情况?

python time-complexity amortized-analysis python-2.7

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

为什么DataFrame的连接速度会成倍增长?

我有一个处理DataFrame的函数,主要是将数据处理成桶,在特定列中使用创建二进制矩阵的特征pd.get_dummies(df[col]).

为了避免一次使用此函数处理我的所有数据(内存不足并导致iPython崩溃),我使用以下方法将大型DataFrame分解为块:

chunks = (len(df) / 10000) + 1
df_list = np.array_split(df, chunks)
Run Code Online (Sandbox Code Playgroud)

pd.get_dummies(df)会自动创建一个基于内容的新栏目df[col]和这些都有可能为每个不同dfdf_list.

处理完毕后,我使用以下方法将DataFrame连接在一起:

for i, df_chunk in enumerate(df_list):
    print "chunk", i
    [x, y] = preprocess_data(df_chunk)
    super_x = pd.concat([super_x, x], axis=0)
    super_y = pd.concat([super_y, y], axis=0)
    print datetime.datetime.utcnow()
Run Code Online (Sandbox Code Playgroud)

第一个块的处理时间是完全可以接受的,然而,它每块增长!这与它没有关系,preprocess_data(df_chunk)因为没有理由增加它.由于呼叫的结果,是否会增加时间pd.concat()

请参阅下面的日志:

chunks 6
chunk 0
2016-04-08 00:22:17.728849
chunk 1
2016-04-08 00:22:42.387693 
chunk 2
2016-04-08 00:23:43.124381
chunk 3
2016-04-08 00:25:30.249369
chunk 4
2016-04-08 00:28:11.922305
chunk 5
2016-04-08 00:32:00.357365 …
Run Code Online (Sandbox Code Playgroud)

python performance concatenation processing-efficiency pandas

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

如何将 DataFrame.append() 转换为 pandas.concat()?

在 pandas 1.4.0 中:append()已被弃用,文档说可以使用concat()

FutureWarning:frame.append 方法已弃用,并将在未来版本中从 pandas 中删除。使用 pandas.concat 代替。

有问题的代码块:

def generate_features(data, num_samples, mask):
    """
    The main function for generating features to train or evaluate on.
    Returns a pd.DataFrame()
    """
    logger.debug("Generating features, number of samples", num_samples)
    features = pd.DataFrame()

    for count in range(num_samples):
        row, col = get_pixel_within_mask(data, mask)
        input_vars = get_pixel_data(data, row, col)
        features = features.append(input_vars)
        print_progress(count, num_samples)

    return features
Run Code Online (Sandbox Code Playgroud)

这是我尝试过但不起作用的两个选项:

features = pd.concat([features],[input_vars])
Run Code Online (Sandbox Code Playgroud)

pd.concat([features],[input_vars])
Run Code Online (Sandbox Code Playgroud)

这是已弃用并引发错误的行:

features = features.append(input_vars)
Run Code Online (Sandbox Code Playgroud)

python concatenation append dataframe pandas

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

Pandas 错误:“IndexError:iloc 无法放大其目标对象”

我正在尝试用另一个单元格填充数据框中的单元格。我正在使用这一行:

submission.iloc[i, coli] = train2.iloc[i2, coli-1]
Run Code Online (Sandbox Code Playgroud)

我收到此错误行:

IndexError:iloc 无法放大其目标对象

这是什么原因?

python dataframe pandas

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

如何将字典作为一行追加到 DataFrame 中?

您好,我想将字典附加到 DataFrame,但在这个字典中我没有任何索引值。我还需要从“KP”值中删除除“1393”之外的所有内容。这看起来像这样:

对此 df:在此处输入图像描述

我想像这样附加字典:

dict = {'KP': [1.0    1393
  Name: KP, dtype: int64],
 'Wiek': [Timedelta('176 days 12:59:43.042156102')],
 'KY1': [113.0],
 'OKO': [57.51],
 'GS': [10.59],
 'T': [654.31],
 'MP': [58.9]}
Run Code Online (Sandbox Code Playgroud)

我试试这个:

dict = {'KP': [1.0    1393
  Name: KP, dtype: int64],
 'Wiek': [Timedelta('176 days 12:59:43.042156102')],
 'KY1': [113.0],
 'OKO': [57.51],
 'GS': [10.59],
 'T': [654.31],
 'MP': [58.9]}
Run Code Online (Sandbox Code Playgroud)

但什么也没发生, df 仍然相同,我没有收到任何错误。我尝试将此字典转换为列表并将列表作为行附加到 df 但我得到了相同的结果。

好的,我试试这个:

df.append(dict,ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

我得到这个输出: 在此处输入图像描述

这还不够好,我需要清晰的数据。

python pandas

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

AttributeError: 'DataFrame' object has no attribute 'append' for DataFrame

I am trying to create a DataFrame object for my spam classifier.It's supposed to contain two columns: 'messages' and 'class'. However when I use the dataframe.append function to add emails as 'messages' to my dataframe along with the folder name as 'class', I'm getting this error:

AttributeError: 'DataFrame' object has no attribute 'append'

For this I initially created a Dataframe as follow data = DataFrame({'message': [], 'class': []})

I tried to use the DataFrame.append() function for adding the spam and …

python append dataframe pandas

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

高级描述熊猫

是否有像熊猫所描述的更高级的功能?通常我会继续:

r = pd.DataFrame(np.random.randn(1000), columns = ['A'])
r.describe()
Run Code Online (Sandbox Code Playgroud)

我会得到一个很好的总结.就像这个:

                A
count  1000.000000
mean      0.010230
std       0.982562
min      -2.775969
25%      -0.664840
50%       0.015452
75%       0.694440
max       3.101434
Run Code Online (Sandbox Code Playgroud)

我可以在statsmodels或scipy中找到更精细的东西吗?

python statistics pandas

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

将列表附加到pd.Dataframe()

我有麻烦listlists,以pandas数据帧.

这是我的数据:

list_of_lists = np.array(hazard)
[['13-06-2016' '2.0' '1.0' '3.0' '88.0' '0.0' '72.0' '7.27']
 ['18-06-2016' '1.0' '0.0' '3.0' '85.5' '0.0' '77.0' '8.05']
 ['22-06-2016' '3.0' '0.0' '5.0' '91.5' '0.0' '66.0' '7.54']
 ['26-06-2016' '3.0' '2.0' '4.0' '89.6' '1.0' '74.0' '10.0']
 ['01-07-2016' '3.0' '0.0' '1.0' '88.9' '0.0' '72.0' '6.75']
 ['27-08-2016' '7.0' '4.0' '2.0' '81.8' '2.0' '91.0' '8.79']
 ['01-09-2016' '0.0' '0.0' '1.0' '59.3' '1.0' '46.0' '6.92']
 ['11-09-2016' '2.0' '1.0' '4.0' '91.7' '0.0' '71.0' '6.84']
 ['16-09-2016' '0.0' '0.0' '1.0' '81.8' …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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