尝试查找几周内两个日期之间的差异时:
import pandas as pd
def diff(start, end):
x = millis(end) - millis(start)
return x / (1000 * 60 * 60 * 24 * 7 * 1000)
def millis(s):
return pd.to_datetime(s).to_datetime64()
diff("2013-06-10","2013-06-16")
Run Code Online (Sandbox Code Playgroud)
结果,我得到:
Out[15]: numpy.timedelta64(857,'ns')
Run Code Online (Sandbox Code Playgroud)
这显然是错误的。问题:
如何获得以周为单位的差异,而不是以纳秒为单位取整?
如何从“ numpy.timedelta64”对象中获取价值?
我不明白为什么会这样
df[(df['Gold']>0) & (df['Gold.1']>0)].loc[((df['Gold'] - df['Gold.1'])/(df['Gold'])).abs().idxmax()]
Run Code Online (Sandbox Code Playgroud)
但是当我分开时(df['Gold'] + df['Gold.1'] + df['Gold.2'])
它停止工作给我错误,你可以在下面找到.
有趣的是,以下行有效
df.loc[((df['Gold'] - df['Gold.1'])/(df['Gold'] + df['Gold.1'] + df['Gold.2'])).abs().idxmax()]
Run Code Online (Sandbox Code Playgroud)
我不明白自从我开始学习Python和Pandas以来发生了什么.我需要了解发生这种情况的原因以及如何解决这个问题.
错误
KeyError:'标签[阿尔及利亚]不在[索引]中
我使用的是Python 2.7,panda 0.14.1-2,numpy 1.8.1-1.我必须使用Python 2.7,因为我将它与在Python 3上不起作用的东西耦合在一起
我正在尝试分析在单独的列中输出Month,Day和Hour的csv文件,看起来如下所示:
Month Day Hour Value
1 1 1 105
1 1 2 30
1 1 3 85
1 1 4 52
1 1 5 65
我基本上想要从这些列创建时间戳,并使用"2005"作为年份,并将此新时间戳列设置为索引.我已经阅读了很多类似的问题(这里和这里),但它们都依赖于read_csv().我没有年份专栏,所以我认为这不适用于我(除了加载数据框,插入列,写入和重做read_csv ...似乎是错综复杂的).
加载数据帧后,我在位置0插入一个Year列df.insert(0,"Year",2005)
所以现在我有了
Year Month Day Hour Value
2005 1 1 1 105
2005 1 1 2 30
2005 1 1 3 85
2005 1 1 4 52
2005 1 1 5 65
df.types告诉我所有列都是int64类型.
然后我尝试这样做:
df['Datetime'] = pd.to_datetime(df.Year*1000000 + df.Month*10000 + df.Day+100 + df.Hour, …
我有一个像这样的pandas数据帧:
>>> df
id value
0 1 10
1 1 11
2 1 9
3 2 7
4 2 7
5 2 8
6 3 10
7 3 8
Run Code Online (Sandbox Code Playgroud)
我希望根据前两个值的总和得到前两个id.所以在这里,我应该得到这个:
id # value
0 1 # 11 + 10 = 21
1 3 # 10 + 8 = 18
Run Code Online (Sandbox Code Playgroud)
我试过用:
df.groupby('id')['value'].nlargest(2).sum()
Run Code Online (Sandbox Code Playgroud)
但这会返回所有最大值的总和.
我寻找我的问题的答案,但我没有得到正确的答案.
我有一个名为的数据框dfimp:
>>dfimp
Column1 Column2
vo_11
102 0.023002 0
301 3571.662104 0
302 1346.910261 0
...
Run Code Online (Sandbox Code Playgroud)
在我的noob意见中它的三列?但:
>>dfimp.dtypes
Column1 float64
Column2 float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
那么它的两列呢?什么是第一个(vo_11)被称为?我想用它来进行合并但是当我这样做时我得到错误,说没有列名vo_11.
我想使用 pandas 从 CSV 文件中读取read_csv。CSV 文件没有列名。当我使用 Pandas 读取 CSV 文件时,第一行默认设置为列。但是当我使用时df.columns = ['ID', 'CODE'],第一行不见了。我想添加,而不是替换。
df = pd.read_csv(CSV)
df
a 55000G707270
0 b 5l0000D35270
1 c 5l0000D63630
2 d 5l0000G45630
3 e 5l000G191200
4 f 55000G703240
df.columns=['ID','CODE']
df
ID CODE
0 b 5l0000D35270
1 c 5l0000D63630
2 d 5l0000G45630
3 e 5l000G191200
4 f 55000G703240
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中一列有一个值列表。例如
created values
0 2016-12-21 [1,2,3,4]
1 2016-12-28 [6,7,8,9]
2 2017-01-4 [13,12,11,10]
Run Code Online (Sandbox Code Playgroud)
假设我想提取不同的行列中的最后一个值list(13,12,11,10)。我已经使用如下所示的函数编写了一些代码iloc[],但出现了错误
类型错误:不可散列的类型:“列表”
i=0
c=[]
while value in a['values']:
i=i+1
c=a['values'].iloc[i]
c
Run Code Online (Sandbox Code Playgroud)
下面是堆栈跟踪
TypeError Traceback (most recent call last)
<ipython-input-18-a6f26f30f73d> in <module>()
2 user_id=[]
3 c=[]
----> 4 while user_id in a['user_ids']:
5 i=i+1
6 c=a['user_ids'].iloc[i]
C:\Users\aditya\Anaconda3\lib\site-packages\pandas\core\generic.py in __ contains__(self, key)
844 def __contains__(self, key):
845 """True if the key is in the info axis"""
--> 846 return key in self._info_axis
847
848 @property
C:\Users\aditya\Anaconda3\lib\site-packages\pandas\indexes\base.py …Run Code Online (Sandbox Code Playgroud) 因此,在下面的屏幕截图中,我们有3个不同的能源站点,即ID01,ID18和ID31。它们的格式为虚拟变量类型,出于可视化的目的,我只想创建一个我可以使用的名为“站点”的列。您会看到我快速创建的循环,但是似乎效率很低。关于如何以最快的方式实现这一目标的任何指示?
