我想将表格(表示为列表列表)转换为Pandas DataFrame.作为一个极其简化的例子:
a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a)
Run Code Online (Sandbox Code Playgroud)
将列转换为适当类型的最佳方法是什么,在这种情况下,将第2列和第3列转换为浮点数?有没有办法在转换为DataFrame时指定类型?或者最好先创建DataFrame,然后循环遍历列以更改每列的类型?理想情况下,我想以动态方式执行此操作,因为可能有数百列,我不想确切地指定哪些列属于哪种类型.我可以保证的是,每列包含相同类型的值.
有人能解释这三种切片方法有何不同?
我已经看过这些文档了,我已经看到了这些 答案,但我仍然发现自己无法解释三者是如何不同的.对我来说,它们在很大程度上似乎是可以互换的,因为它们处于较低的切片水平.
例如,假设我们想获得a的前五行DataFrame.这三个都是如何运作的?
df.loc[:5]
df.ix[:5]
df.iloc[:5]
Run Code Online (Sandbox Code Playgroud)
有人可以提出三种情况,其中使用的区别更清晰吗?
我已经创建了一个pandas DataFrame
df = DataFrame(index=['A','B','C'], columns=['x','y'])
Run Code Online (Sandbox Code Playgroud)
得到了这个
x y
A NaN NaN
B NaN NaN
C NaN NaN
然后我想为特定单元格赋值,例如行'C'和列'x'.我期望得到这样的结果:
x y
A NaN NaN
B NaN NaN
C 10 NaN
使用此代码:
df.xs('C')['x'] = 10
Run Code Online (Sandbox Code Playgroud)
但是df的内容没有改变.在数据帧中它只是Nan的.
有什么建议?
说我有以下的数据帧,我想改变列的两个元素c是对应于列前两个元素a是等于1平等2.
>>> df = pd.DataFrame({"a" : [1,1,1,1,2,2,2,2], "b" : [2,3,1,4,5,6,7,2], "c" : [1,2,3,4,5,6,7,8]})
>>> df.loc[df["a"] == 1, "c"].iloc[0:2] = 2
>>> df
a b c
0 1 2 1
1 1 3 2
2 1 1 3
3 1 4 4
4 2 5 5
5 2 6 6
6 2 7 7
7 2 2 8
Run Code Online (Sandbox Code Playgroud)
第二行中的代码不起作用,因为iloc设置了副本,因此不修改原始数据帧.我该怎么做?