小编RDJ*_*RDJ的帖子

熊猫 - 将字符串转换为没有日期的时间

我已阅读大量的SO答案,但无法找到明确的解决方案.

我在df中有这个数据day1,表示小时数:

1    10:53
2    12:17
3    14:46
4    16:36
5    18:39
6    20:31
7    22:28
Name: time, dtype: object>
Run Code Online (Sandbox Code Playgroud)

我想将其转换为时间格式.但是当我这样做时:

day1.time = pd.to_datetime(day1.time, format='H%:M%')

结果包括今天的日期:

1   2015-09-03 10:53:00
2   2015-09-03 12:17:00
3   2015-09-03 14:46:00
4   2015-09-03 16:36:00
5   2015-09-03 18:39:00
6   2015-09-03 20:31:00
7   2015-09-03 22:28:00
Name: time, dtype: datetime64[ns]>
Run Code Online (Sandbox Code Playgroud)

似乎这个format论点不起作用 - 如何在没有约会的情况下获得这里显示的时间?


更新

以下格式正确的时间,但不知何故列仍然是一个对象类型.为什么不转换成datetime64

day1['time'] = pd.to_datetime(day1['time'], format='%H:%M').dt.time

1    10:53:00
2    12:17:00
3    14:46:00
4    16:36:00
5    18:39:00
6    20:31:00
7    22:28:00 …
Run Code Online (Sandbox Code Playgroud)

python pandas

30
推荐指数
3
解决办法
4万
查看次数

Dplyr或Magrittr - tolower?

是否可以在dplyr或magrittr链中将所有列名设置为高位或低位?

在下面的示例中,我加载数据,然后使用magrittr管道将其链接到我的dplyr突变.在第4行中我使用了tolower函数,但这是出于不同的目的:使用小写观察创建一个新变量.

mydata <- read.csv('myfile.csv') %>%
    mutate(Year = mdy_hms(DATE),
           Reference = (REFNUM),
           Event = tolower(EVENT)
Run Code Online (Sandbox Code Playgroud)

我显然正在寻找类似的东西,colnames = tolower但知道这不起作用/存在.

我注意到dplyr rename函数,但这不是很有用.

在magrittr中,colname选项是:

set_colnames而不是基础R colnames<-
set_names而不是基础R'names<-

我尝试了很多这些但没有骰子的排列.

显然,这在基础r中非常简单.

names(mydata) <- tolower(names(mydata))
Run Code Online (Sandbox Code Playgroud)

然而,在进入优雅的dplyr/magrittr代码链之前,与/哲学似乎不,你必须做一个笨重的单线程.

r dplyr magrittr

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

熊猫:如何将多个数据帧作为HTML表格引用和打印

我正在尝试从a分割出单个数据帧,groupby将它们打印为pandas HTML表格.我需要将它们作为表单独引用和呈现,以便我可以截取它们进行演示.

这是我目前的代码:

import pandas as pd

df = pd.DataFrame(
    {'area': [5, 42, 20, 20, 43, 78, 89, 30, 46, 78],
     'cost': [52300, 52000, 25000, 61600, 43000, 23400, 52300, 62000, 62000, 73000], 
     'grade': [1, 3, 2, 1, 2, 2, 2, 4, 1, 2], 'size': [1045, 957, 1099, 1400, 1592, 1006, 987, 849, 973, 1005], 
     'team': ['man utd', 'chelsea', 'arsenal', 'man utd', 'man utd', 'arsenal', 'man utd', 'chelsea', 'arsenal', 'arsenal']})

result =  df.groupby(['team', 'grade']).agg({'cost':'mean', 'area':'mean', 'size':'sum'}).rename(columns={'cost':'mean_cost', 'area':'mean_area'})

dfs = …
Run Code Online (Sandbox Code Playgroud)

python ipython pandas jupyter-notebook

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

熊猫:按日期分组和另一个变量的中位数

这是我的DataFrame的演示示例.完整的DataFrame有多个附加变量,涵盖6个月的数据.

sentiment     date
1             2015-05-26 18:58:44
0.9           2015-05-26 19:57:31
0.7           2015-05-26 18:58:24
0.4           2015-05-27 19:17:34
0.6           2015-05-27 18:46:12
0.5           2015-05-27 13:32:24
1             2015-05-28 19:27:31
0.7           2015-05-28 18:58:44
0.2           2015-05-28 19:47:34
Run Code Online (Sandbox Code Playgroud)

我想在date列的日期对DataFrame进行分组,但同时聚合sentiment列的中值.

我试过的所有东西groupby,dt访问者timegrouper都失败了.

我想返回一个pandas DataFrame而不是GroupBy对象.

日期列是 M8[ns]

情绪栏目 float64

python pandas

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

熊猫:如何删除多个列作为列名?

根据标题,这是一个可重复的例子:

raw_data = {'x': ['this', 'that', 'this', 'that', 'this'], 
            np.nan: [np.nan, np.nan, np.nan, np.nan, np.nan], 
            'y': [np.nan, np.nan, np.nan, np.nan, np.nan],
            np.nan: [np.nan, np.nan, np.nan, np.nan, np.nan]}

df = pd.DataFrame(raw_data, columns = ['x', np.nan, 'y', np.nan])
df

    x       nan  y      nan
0   this    NaN  NaN    NaN
1   that    NaN  NaN    NaN
2   this    NaN  NaN    NaN
3   that    NaN  NaN    NaN
4   this    NaN  NaN    NaN
Run Code Online (Sandbox Code Playgroud)

目标是仅删除列nan作为列名称(因此保留列y).dropna()不工作,因为它条件对nan列,而不是nan作为山坳名.

df.drop(np.nan, axis=1, inplace=True) …

python pandas

8
推荐指数
2
解决办法
3984
查看次数

Seaborn/Matplotlib:如何在事实y轴上抑制科学记数法

这个问题下面的简单示例我无法解决.

NB其他一些Seaborn绘图方法似乎有压制指数形式的论据,但似乎没有factorplots.我尝试了一些Matplotlib解决方案,包括在这个类似问题中提出的解决方案但没有工作.这也不是这个问题的愚蠢行为.我经常使用factorplots,理想情况下想找到一个合适的解决方案,而不是一个变通方法.

data = {'reports': [4, 24, 31, 2, 3],'coverage': [35050800, 54899767, 57890789, 62890798, 70897871]}
df = pd.DataFrame(data)
df
Run Code Online (Sandbox Code Playgroud)

生成此数据框:

    coverage    reports
0   35050800    4
1   54899767    24
2   57890789    31
3   62890798    2
4   70897871    3
Run Code Online (Sandbox Code Playgroud)

然后这个Seaborn代码:

sns.factorplot(y="coverage", x="reports", kind='bar', data=df, label="Total") 
Run Code Online (Sandbox Code Playgroud)

产生这个情节:

在此输入图像描述

有没有办法让y轴根据coverage值显示适当的数字刻度?

python matplotlib seaborn

7
推荐指数
2
解决办法
5781
查看次数

如何纠正 Pandas DataFrame 中的拼写

使用TextBlob库,可以通过首先将字符串定义为 TextBlob 对象然后使用该correct方法来改进字符串的拼写。

例子:

from textblob import TextBlob
data = TextBlob('Two raods diverrged in a yullow waod and surry I culd not travl bouth')
print (data.correct())
Two roads diverged in a yellow wood and sorry I could not travel both
Run Code Online (Sandbox Code Playgroud)

是否可以对 Pandas DataFrame 系列中的字符串执行此操作,例如:

data = [{'one': '3', 'two': 'two raods'}, 
         {'one': '7', 'two': 'diverrged in a yullow'}, 
        {'one': '8', 'two': 'waod and surry I'}, 
        {'one': '9', 'two': 'culd not travl bouth'}]
df = pd.DataFrame(data)
df …
Run Code Online (Sandbox Code Playgroud)

python nlp pandas textblob

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

熊猫“as_index”功能无法按预期工作

这是我称为“调用”的原始数据框的最小可重现示例:

       phone_number    call_outcome   agent  call_number
0      83473306392   NOT INTERESTED  orange            0
1     762850680150  CALL BACK LATER  orange            1
2     476309275079   NOT INTERESTED  orange            2
3     899921761538  CALL BACK LATER     red            3
4     906739234066  CALL BACK LATER  orange            4
Run Code Online (Sandbox Code Playgroud)

写这个熊猫命令...

most_calls = calls.groupby('agent') \
.count().sort('call_number', ascending=False)
Run Code Online (Sandbox Code Playgroud)

返回这个...

           phone_number  call_outcome  call_number
agent                                          
orange          2234          2234         2234
red             1478          1478         1478
black            750           750          750
green            339           339          339
blue             199           199          199
Run Code Online (Sandbox Code Playgroud)

这是正确的,但事实上我希望“代理”是一个变量而不是索引。

我曾as_index=False多次使用该函数,并且熟悉指定axis=1. 然而,在这种情况下,我在何处或如何合并这些参数并不重要,每个排列都会返回一个错误。

这些是我尝试过的一些示例以及相应的错误:

most_calls = …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Scala:用于匹配List中的int的循环

Scala新手.我正在迭代一次for循环100次.10次​​我想要满足条件'a'和90次条件'b'.但是我希望10 a随机出现.

我能想到的最好的方法是创建一个10个随机整数的val,然后循环1到100个整数.

例如:

val z = List.fill(10)(100).map(scala.util.Random.nextInt)

z: List[Int] = List(71, 5, 2, 9, 26, 96, 69, 26, 92, 4)
Run Code Online (Sandbox Code Playgroud)

然后像:

for (i <- 1 to 100) {
  whenever i == to a number in z: 'Condition a met: do something'
else {
   'condition b met: do something else'
  }
}
Run Code Online (Sandbox Code Playgroud)

我试着用contains===!,但似乎没有任何工作.我怎么能这样做?

scala

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

R:如何同时传播,分组,汇总和变异

我想spread通过“年”列在下面获取此数据(仅在此处显示前12行),并返回按“国家/地区名称”分组的“订单”总数。然后计算2014年至2015年每个“国家/地区名称”在“订单”中的变化百分比。

CountryName     Days        pCountry     Revenue    Orders  Year
United Kingdom  0-1 days    India        2604.799   13      2014
Norway          8-14 days   Australia    5631.123   9       2015
US              31-45 days  UAE          970.8324   2       2014
United Kingdom  4-7 days    Austria      94.3814    1       2015
Norway          8-14 days   Slovenia     939.8392   3       2014
South Korea     46-60 days  Germany      1959.4199  15      2014
UK              8-14 days   Poland       1394.9096  6.      2015
UK              61-90 days  Lithuania   -170.8035   -1      2015
US              8-14 days   Belize       1687.68    5       2014
Australia       46-60 days  Chile        888.72 …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr

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

标签 统计

python ×7

pandas ×6

dplyr ×2

r ×2

ipython ×1

jupyter-notebook ×1

magrittr ×1

matplotlib ×1

nlp ×1

scala ×1

seaborn ×1

textblob ×1

tidyr ×1