我有一个拥有1000行和10列的Pandas Data Frame对象.我只想切片数据框并取前10行.我怎样才能做到这一点?我一直试图用这个:
>>> df.shape
(1000,10)
>>> my_slice = df.ix[10,:]
>>> my_slice.shape
(10,)
Run Code Online (Sandbox Code Playgroud)
my_slice不应该是前十行,即.10 x 10数据帧?如何获得前十行,例如my_slice10x10数据帧对象?谢谢.
如何get_dummies在多个DataFrame列上以惯用方式运行一个函数,它需要单个列并返回多个列?
我有一个具有重复行的DataFrame.我想获得一个具有唯一索引且没有重复项的DataFrame.丢弃重复的值是可以的.这可能吗?它会完成groupby吗?
在MATLAB中,要交换表的第一列和第二列A,可以执行此操作1
A = A(:, [2 1 3:end]);
Run Code Online (Sandbox Code Playgroud)
如果A是大熊猫,有没有一种同样方便的方法DataFrame呢?
1 MATLAB使用基于1的索引.
ggplot2在R 中使用库我最喜欢的一个方面是能够轻松指定美学.我可以快速制作一个散点图并应用与特定列关联的颜色,我希望能够使用python/pandas/matplotlib执行此操作.我想知道是否有任何便利功能,人们用它来使用pandas数据帧和Matplotlib将颜色映射到值?
##ggplot scatterplot example with R dataframe, `df`, colored by col3
ggplot(data = df, aes(x=col1, y=col2, color=col3)) + geom_point()
##ideal situation with pandas dataframe, 'df', where colors are chosen by col3
df.plot(x=col1,y=col2,color=col3)
Run Code Online (Sandbox Code Playgroud)
编辑:感谢您的回复,但我想包含一个示例数据框,以澄清我的要求.两列包含数字数据,第三列是分类变量.我想的脚本将根据此值指定颜色.
import pandas as pd
df = pd.DataFrame({'Height':np.random.normal(10),
'Weight':np.random.normal(10),
'Gender': ["Male","Male","Male","Male","Male",
"Female","Female","Female","Female","Female"]})
Run Code Online (Sandbox Code Playgroud) 我试图找出如何根据每对唯一列(ip,useragent)的行数来计算,例如
d = pd.DataFrame({'ip': ['192.168.0.1', '192.168.0.1', '192.168.0.1', '192.168.0.2'], 'useragent': ['a', 'a', 'b', 'b']})
ip useragent
0 192.168.0.1 a
1 192.168.0.1 a
2 192.168.0.1 b
3 192.168.0.2 b
Run Code Online (Sandbox Code Playgroud)
生产:
ip useragent
192.168.0.1 a 2
192.168.0.1 b 1
192.168.0.2 b 1
Run Code Online (Sandbox Code Playgroud)
想法?
我需要处理大量的CSV文件,其中时间戳始终是表示unix时间戳的字符串,以毫秒为单位.我找不到一种方法来有效地修改这些列.
这就是我提出的,但是这当然只复制了列,我必须以某种方式将它放回原始数据集.我确定在创建时可以完成DataFrame吗?
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
import pandas as pd
data = 'RUN,UNIXTIME,VALUE\n1,1447160702320,10\n2,1447160702364,20\n3,1447160722364,42'
df = pd.read_csv(StringIO(data))
convert = lambda x: datetime.datetime.fromtimestamp(x / 1e3)
converted_df = df['UNIXTIME'].apply(convert)
Run Code Online (Sandbox Code Playgroud)
这将选择"UNIXTIME"列并从中进行更改
0 1447160702320
1 1447160702364
2 1447160722364
Name: UNIXTIME, dtype: int64
Run Code Online (Sandbox Code Playgroud)
进入这个
0 2015-11-10 14:05:02.320
1 2015-11-10 14:05:02.364
2 2015-11-10 14:05:22.364
Name: UNIXTIME, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
但是,我想使用类似的方法pd.apply()来获取使用转换列返回的整个数据集,或者正如我已经写过的那样,只需在从CSV生成DataFrame时创建日期时间.
我有一个包含大约25列的DataFrame,其中有几列包含不适合绘图的数据.DataFrame.hist()会抛出错误.如何指定应从绘图中排除这些列?
如果我做
mt = mobile.PattLen.value_counts() # sort True by default
Run Code Online (Sandbox Code Playgroud)
我明白了
4 2831
3 2555
5 1561
[...]
Run Code Online (Sandbox Code Playgroud)
如果我做
mt = mobile.PattLen.value_counts(sort=False)
Run Code Online (Sandbox Code Playgroud)
我明白了
8 225
9 120
2 1234
[...]
Run Code Online (Sandbox Code Playgroud)
我想要做的是以2,3,4的升序(左数字列)获得输出.我可以以某种方式更改value_counts还是需要使用其他函数.
另一个熊猫问题!
我正在编写一些单元测试来测试两个数据帧的相等性,但是,测试似乎没有看到数据帧的值,只有结构:
dates = pd.date_range('20130101', periods=6)
df1 = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
df2 = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print df1
print df2
self.assertItemsEqual(df1, df2)
Run Code Online (Sandbox Code Playgroud)
- >真
在声明相等之前,我是否需要将数据帧转换为另一个数据结构?