python - 如何从第一个元素是python中的列名的列表中创建单列的DataFrame
问题描述
我在 csv 中有以下数据,我试图通过一次从 csv 中选择每一列来创建一个包含 1 列的数据框。
sv_m1 rev ioip
0 15.31 40
0 64.9 0
0 18.36 20
0 62.85 0
0 10.31 20
0 12.84 10
0 69.95 0
0 32.81 20
我得到的列表,第一个值是列名,其余的是值。
input_file = open('df_seg_sample.csv', 'r')
c_reader = csv.reader(input_file, delimiter=',')
#Read column
column = [x[1] for x in c_reader]
label = column[0]
column = column[1:]
df_column = pd.DataFrame.from_records(data = column,columns = label)
然而,这给了我一个错误:
TypeError: Index(...) must be called with a collection of some kind, 'sv_m1' was passed
core 实际上是列名。
我怎样才能创建这个df?df 的列名将是列表中的第一个元素,列表中的所有其他项目将是列值。
不使用 pandas.read_csv 的原因是:数据帧很大并且占用了大量内存。所以我想一次读一列,做一些处理并将其写入另一个csv。
解决方案
我认为read_csv
这里需要usecols
过滤器第二列的参数:
df = pd.read_csv('df_seg_sample.csv', usecols=[1])
print (df)
rev
0 15.31
1 64.90
2 18.36
3 62.85
4 10.31
5 12.84
6 69.95
7 32.81
但是,如果要使用您的解决方案,则需要[]
为列名添加一项列表并仅使用DataFrame
构造函数:
data = [x[1] for x in c_reader]
print (data)
['rev', '15.31', '64.9', '18.36', '62.85', '10.31', '12.84', '69.95', '32.81']
df = pd.DataFrame(data[1:], columns=[data[0]])
print (df)
rev
0 15.31
1 64.9
2 18.36
3 62.85
4 10.31
5 12.84
6 69.95
7 32.81
推荐阅读
- c - 以下代码中用于设计解析器的错误在哪里?
- python-3.x - sublime text 3 anaconda 重启后停止工作
- php - 读取外部文件以在 Symfony 5 中配置学说
- python - 如何使用 tensorflow.data.Dataset.flat_map(my_func) 与多个参数的功能?
- javascript - 为图像添加旋转效果
- regex - 在正则表达式的反向引用中执行第二次替换
- java - lambda 表达式中的返回类型,Reduce 函数
- android - Xamarin 表单 Java.Lang.NoSuchMethodError
- r - 如何在 R markdown 中引用图形
- mpi - 没有发生明显的死锁情况