Pandas乘法不能像我期望的那样在列数据帧中工作:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': [1,2,3]})
In [3]: s = pd.Series([5,6,7])
In [4]: df * s
0 1 2 a
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
正如在中所讨论的,正确的方法是
In [5]: df.multiply(s, axis='index')
a
0 5
我正在尝试编写一个应用于所提供的参数的每个元素的函数,无论该参数是嵌套的python列表、numpy数组,还是熊猫的dataframe或series。
示例:(不工作)
import numpy as np
import pandas as pd
a = [[1,2,3,4,5], [6,7,8,9,10]]
b = np.array(a)
c = pd.DataFrame(a)
def printElement(x):
print x
def iterateOverElements(arg):
for element in arg:
printEleme
我有一个1000行1000列的dataframe。我试图使用for循环从该数据帧生成一个numpy数组,我使用for循环随机选择每个周期的5列。我需要追加或连接我生成的每个数组(1000行和5列)。但是,它发现,如果不首先指定维度,就不可能创建numpy数组。
我尝试了以下代码:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.choice([0.0, 0.05], size=(1000,1000)))
l = np.array([])
for i in range(0,100):
rand_co
我有一个形状(70万,5000)的大熊猫DataFrame,其中包含混合的d类型列(主要是int8、一些float64和几个datetime64ns)。对于dataframe中的每一行,如果另一列也等于零,则希望将某些列的值设置为零。
如果我遍历dataframe并使用iloc设置值,它会非常慢。我尝试过迭代和迭代。
1.迭代行
ix_1 = 3
ix_to_change = [20, 24, 51] # Actually it is almost 5000 columns to change
for i, row in df.iterrows():
if not row[ix_1]
我有一个很大的SPSS文件(包含100多万条记录,列略低于150列),我想将其转换为Pandas DataFrame。
将文件转换为列表需要几分钟,将其转换为数据帧需要几分钟,设置列头也需要几分钟。
有没有什么我遗漏的优化方案呢?
import pandas as pd
import numpy as np
import savReaderWriter as spss
raw_data = spss.SavReader('largefile.sav', returnHeader = True) # This is fast
raw_data_list = list(raw_d