【发布时间】:2020-02-22 07:38:43
【问题描述】:
我想在列表理解中对 pandas 数据框的行运行一个函数。 数据框可以有不同数量的列。 如何使用这些数据框列?
import pandas as pd
df = {'chrom': ['chr1', 'chr1','chr1'], 'start': [10000, 10100, 12000], 'end':[10150,10120,12250], 'S1':[1, 1, 1],'S2':[2, 2, 2],'S3':[3, 3, 3] }
df = pd.DataFrame(data=df)
print(df)
def func(row):
print(row)
[func(row) for row in zip(df['chrom'],df['start'],df['S1'],df['S2'],df['S3'])]
如何以一种内存有效的方式做到这一点?这样我们就不会收到大数据帧的任何内存错误。
【问题讨论】:
-
取决于您想要的输出方式。似乎您的操作方式可能是最有效的方式之一(因为
zip()有效地生成了一个生成器)-您在这里遇到了特殊问题吗? -
是的,以“S”开头的列数不是恒定的。从 'S1' ... 到 'S30' 可以有 30 列,或者从 'S1' ... 到 'S60' 可以有 60 列。
-
由于列数是一个变量,我使用了 df[list(df.columns.values)].values() 但这会产生 MemoryError
-
同样使用 df[list(df.columns.values)].to_numpy(copy=False) 会产生 MemoryError
标签: python dataframe list-comprehension