小编her*_*lla的帖子

如何删除Pandas数据帧索引的'秒'?

给定具有时间序列的数据框,如下所示:

                      Close
2015-02-20 14:00:00  1200.1
2015-02-20 14:10:00  1199.8
2015-02-21 14:00:00  1199.3
2015-02-21 14:10:00  1199.0
2015-02-22 14:00:00  1198.4
2015-02-22 14:10:00  1199.7
Run Code Online (Sandbox Code Playgroud)

我怎样才能摆脱索引的'秒',看起来像这样:

                   Close
2015-02-20 14:00  1200.1
2015-02-20 14:10  1199.8
2015-02-21 14:00  1199.3
2015-02-21 14:10  1199.0
2015-02-22 14:00  1198.4
2015-02-22 14:10  1199.7
Run Code Online (Sandbox Code Playgroud)

谢谢

python time-series dataframe pandas

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

通过df字典循环,以便在Pandas中合并df

我有以下字典与数据帧

A = pd.DataFrame([[2, 1], [2, 1], [2, 1]], columns=['A', 'B'], index = [1, 2, 3])
B = pd.DataFrame([[1, 1], [2, 2], [3, 3]], columns=['A', 'B'], index = [1, 2, 3])
C = pd.DataFrame([[1, 2], [1, 2], [1, 2]], columns=['A', 'B'], index = [1, 2, 3])

df_all = {'df1': A, 'df2': B, 'df3': C}
Run Code Online (Sandbox Code Playgroud)

我想通过它们的索引合并它们'inner',但是使用for循环迭代它们.它必须等同于做

df4 = pd.merge(A, B, left_index=True, right_index=True, how='inner')
df5 = pd.merge(df4, C, left_index=True, right_index=True, how='inner')
Run Code Online (Sandbox Code Playgroud)

结果看起来像

   A_x  B_x  A_y  B_y  A  B
1    2    1    1 …
Run Code Online (Sandbox Code Playgroud)

python dictionary for-loop dataframe pandas

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

如何应用具有多个条件的Pandas Groupby进行拆分并应用多个计算?

我有一个数据帧,我需要根据2个条件进行拆分,并将此条件应用于3个不同的列,然后使用这些新拆分以成对方式对其他列执行某些计算.

所以我有一个df A.

A = pd.DataFrame([[1, 5, 2, 3, 4, 1], [2, 4, 4, 5, 5, 1], [3, 3, 1, 2, 5, 4], [4, 2, 2, 3, 5, 5], [5, 1, 4, 2, 3, 1]],
                 columns=['A', 'B', 'C', 'D', 'E', 'F'], index=[1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)

我需要根据2个条件拆分数据框并应用于前三列,如下所示

condition1_colA = A[A['A'] > 1]
condition2_colA = A[A['A'] < 1]
condition1_colB = A[A['B'] > 1]
condition2_colB = A[A['B'] < 1]
condition1_colC = A[A['C'] > 1]
condition2_colC = A[A['C'] < 1]
Run Code Online (Sandbox Code Playgroud)

现在,我需要对6个新切片数据帧中的每一个进行3次计算,但是这个计算按以下方式配对:

  • 条件['D']的condition1_colA和condition2_colA
  • 条件['E']的condition1_colB和condition2_colB …

python split subset dataframe pandas

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

如何使用groupby将多个函数应用于Pandas中的多个列?

我有正常的df

A = pd.DataFrame([[1, 5, 2], [2, 4, 4], [3, 3, 1], [4, 2, 2], [5, 1, 4]],
                 columns=['A', 'B', 'C'], index=[1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)

按照这个方法,我得到了我想要的结果.

In [62]: A.groupby((A['A'] > 2)).apply(lambda x: pd.Series(dict(
                   up_B=(x.B >= 0).sum(), down_B=(x.B < 0).sum(), mean_B=(x.B).mean(), std_B=(x.B).std(),
                   up_C=(x.C >= 0).sum(), down_C=(x.C < 0).sum(), mean_C=(x.C).mean(), std_C=(x.C).std())))

Out[62]:
       down_B  down_C  mean_B    mean_C     std_B     std_C  up_B  up_C
A                                                                      
False       0       0     4.5  3.000000  0.707107  1.414214     2     2
True        0       0     2.0  2.333333  1.000000  1.527525     3     3 …
Run Code Online (Sandbox Code Playgroud)

python group-by dataframe pandas

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

将Python Pandas中的列名从datatime对象更改为字符串?

遵循这个食谱.我'转向'一个看起来像这样的数据框:

                      Close
2015-02-20 14:00:00  1200.1
2015-02-20 14:10:00  1199.8
2015-02-21 14:00:00  1199.3
2015-02-21 14:10:00  1199.0
2015-02-22 14:00:00  1198.4
2015-02-22 14:10:00  1199.7
Run Code Online (Sandbox Code Playgroud)

把它变成了这个:

             14:00  14:10
 2015-02-20 1200.1 1199.8
 2015-02-21 1199.3 1199.0
 2015-02-22 1198.4 1199.7
Run Code Online (Sandbox Code Playgroud)

但是,现在我想要在列之间进行简单的计算,例如:

df['Chg'] = df['14:10:00'] - df['14:00:00']
Run Code Online (Sandbox Code Playgroud)

我得到一个KeyError,因为在'pivoting'之后,列名是datetime.time数据.

In [1]: df_pivot.columns.tolist()
Out [2]:   
[datetime.time(14, 0),
 datetime.time(14, 10)]
Run Code Online (Sandbox Code Playgroud)

如何修改我的透视数据框,这样我就可以在列之间进行简单的计算.我猜这意味着将列名的格式从datetime.time更改为str.

谢谢

python pivot-table time-series dataframe pandas

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

如何在Seaborn中获得2个单独的地块?

我有一个很大的功能,它的输出是一个数据框和2个图表。像这样:

summary = pd.concat([mean, std], axis=1)
chart1 = sns.tsplot(sample['x'].cumsum())
chart2 = sns.tsplot(summary['mean'])
result = [summary, chart1, chart2]
return result
Run Code Online (Sandbox Code Playgroud)

一切正常,除了,我只得到一张包含两个时间序列的图表。我想得到两个单独的图表。我该怎么做呢?

谢谢

python python-2.7 pandas seaborn

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

如何用df.loc或df.iloc替换df.ix?

鉴于即将弃用df.ix [...]

如何在这段代码中替换.ix?

df_1 = df.ix[:,        :datetime.time(16, 50)]
df_2 = df.ix[:, datetime.time(17, 0) :       ]
df_3 = df2.shift(periods = 1) 
df_4 = pd.concat([df3, df1], axis = 1)
Run Code Online (Sandbox Code Playgroud)

作为参考,这是该段代码的一些背景知识

python deprecated dataframe python-3.x pandas

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

如何正确扩展熊猫数据框?

给定df:

Date and Time,Open,High,Low,Close                 
07/13/2017 15:55,1.1436,1.1436,1.1436,1.1436
07/13/2017 15:56,1.1435,1.1435,1.1435,1.1435
07/13/2017 15:57,1.1434,1.1434,1.1434,1.1434
07/13/2017 15:58,1.1436,1.1436,1.1436,1.1436
07/13/2017 15:59,1.1437,1.1437,1.1437,1.1437
Run Code Online (Sandbox Code Playgroud)

我如何扩展索引并用最后一行的值填充数据框,结果输出将如下所示:

以1分钟的频率延长df 24h:

Date and Time,Open,High,Low,Close
07/13/2017 15:55,1.1436,1.1436,1.1436,1.1436   |
07/13/2017 15:56,1.1435,1.1435,1.1435,1.1435   |
07/13/2017 15:57,1.1434,1.1434,1.1434,1.1434   | --> Existing Data
07/13/2017 15:58,1.1436,1.1436,1.1436,1.1436   |
07/13/2017 15:59,1.1437,1.1437,1.1437,1.1437   |
07/13/2017 16:00,1.1437,1.1437,1.1437,1.1437   
07/13/2017 16:02,1.1437,1.1437,1.1437,1.1437
07/13/2017 16:03,1.1437,1.1437,1.1437,1.1437
...
...
...
07/14/2017 15:57,1.1437,1.1437,1.1437,1.1437
07/14/2017 15:58,1.1437,1.1437,1.1437,1.1437
07/14/2017 15:59,1.1437,1.1437,1.1437,1.1437
Run Code Online (Sandbox Code Playgroud)

python indexing time-series dataframe pandas

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

如何在 pandas 数据框中合并 datetime.date 和 datetime.time 列?

给定 df

          Date      Time    Data     
3   2017-08-10  15:15:00    a    
0   2017-08-11  15:15:00    b    
1   2017-08-12  15:15:00    c    
2   2017-08-13  15:15:00    d    
1   2017-08-14  15:15:00    e    
Run Code Online (Sandbox Code Playgroud)

print (type(df['Date'].iat[0]))
<class 'datetime.date'>

print (type(df['Time'].iat[0]))
<class 'datetime.time'>
Run Code Online (Sandbox Code Playgroud)

如何将 df.Date 和 df.Time 合并到作为日期时间对象的 DateTime 列中?:

        Date        Time    Data  DateTime   
3   2017-08-10  15:15:00    a     2017-08-10 15:15:00
0   2017-08-11  15:15:00    b     2017-08-11 15:15:00
1   2017-08-12  15:15:00    c     2017-08-12 15:15:00
2   2017-08-13  15:15:00    d     2017-08-13 15:15:00
1   2017-08-14  15:15:00    e     2017-08-14 15:15:00
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

df['DateTime'] = df.apply(lambda r …
Run Code Online (Sandbox Code Playgroud)

python datetime dataframe python-3.x pandas

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

如何从Python中的dataframe columns元素创建字符串?

给定一个数据帧df,(现实生活是+1000行df).元素ColB是列表列表.

  ColA    ColB
0  'A'    [['a','b','c'],['d','e','f']]
1  'B'    [['f','g','h'],['i','j','k']]
2  'A'    [['l','m','n'],['o','p','q']]
Run Code Online (Sandbox Code Playgroud)

如何ColC使用不同列中的元素有效地创建一个字符串,如下所示:

      ColC
'A>+a b:c,+d e:f'
'B>+f g:h,+i j:k'
'A>+l m:n,+o p:q'
Run Code Online (Sandbox Code Playgroud)

我尝试了df.apply这些方法,灵感来自于:

df['ColC'] = df.apply(lambda x:'%s>' % (x['ColA']),axis=1)
Run Code Online (Sandbox Code Playgroud)

这适用于字符串的前2个元素.其余的都很难过.

python string dataframe pandas

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