pandas把长度为10的列表写入csv文件
时间: 2023-06-19 11:10:12 浏览: 77
可以使用 `pandas` 库中的 `DataFrame` 对象将长度为10的列表写入 `csv` 文件。
首先,导入 `pandas` 库:
```python
import pandas as pd
```
接着,创建一个包含列表的 `DataFrame` 对象:
```python
data = pd.DataFrame({'list': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]})
```
最后,使用 `to_csv()` 方法将数据写入 `csv` 文件:
```python
data.to_csv('file.csv')
```
完整代码如下:
```python
import pandas as pd
data = pd.DataFrame({'list': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]})
data.to_csv('file.csv')
```
相关问题
python 列表list写入csv文件全部显示省略号
当你在Python中尝试将列表(list)数据写入CSV文件,并发现所有内容都被替换为省略号(...),这通常是由于列宽不足以完全展示列表元素导致的。CSV默认只显示部分数据,如果元素长度超出了设定的列宽,就会被截断。
解决这个问题的方法有几种:
1. **调整列宽**:使用`pandas`库的`to_csv`函数时,可以设置`column-width`参数来指定每个字段的最大宽度。例如:
```python
import pandas as pd
data = ['长字符串...', '短字符串', ...] # 这里假设你的列表是一个包含字符串的列表
df = pd.DataFrame([data])
df.to_csv('output.csv', column_format='>{width}', width=len(max(df.iloc[0], key=len)) + 1)
```
2. **分行写入**:如果数据过长,可以考虑逐个元素写入,或者先预处理列表,将其拆分为多个较短的部分。
3. **使用`csv.writer`手动控制**:你可以直接操作`csv.writer`,设置`QUOTE_MINIMAL`选项来省略多余的空格,然后控制每行数据的长度。
```python
import csv
with open('output.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL)
for item in data:
writer.writerow([item[:80]]) # 或者你希望的其他长度限制
```
读取一个30g以上的csv文件,逐行读取该csv文件,文件有五列,分别为schedulerid、nameid、addlongtime、variableid、val。 当读取到行,第二列为47且第三列时间相同时,时间格式举例为20220223082350,构建新的csv文件,文件一共有三列,第一列为schedule,第二列为time,第三列为weiyi,将连续相同的第三列情况下的第五列数值,写入在新建csv文件weiyi下的一个单元格中每个数值以“,”隔开,并将第三列相同的时间改变格式为2022/02/23 08:23:50写入新建csv文件time中,第一列写入新建文件csv文件schedule中。
由于数据量很大,可以采用分块读取的方式,每次读取一定行数的数据,处理后写入新的csv文件中。
示例代码:
```python
import pandas as pd
import datetime
# 定义读取的块大小
chunksize = 100000
# 定义输出文件名和列名
output_file = 'output.csv'
output_cols = ['schedule', 'time', 'weiyi']
# 打开输出文件,写入列名
with open(output_file, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(output_cols)
# 逐块读取原始文件
for df in pd.read_csv('input.csv', chunksize=chunksize):
# 筛选出第二列为47的行
df = df[df['nameid'] == 47]
# 按时间排序
df = df.sort_values('addlongtime')
# 遍历每一行,构建新的数据行
new_rows = []
last_time = None
last_weiyi = None
for index, row in df.iterrows():
time_str = row['addlongtime'] # 时间字符串,格式为20220223082350
time_obj = datetime.datetime.strptime(time_str, '%Y%m%d%H%M%S') # 转换为datetime对象
weiyi = row['val']
if time_obj == last_time:
# 如果时间相同,将当前weiyi加入到上一个数据行的weiyi中
last_weiyi.append(weiyi)
else:
# 如果时间不同,构建新的数据行
schedule = row['schedulerid']
time_str = time_obj.strftime('%Y/%m/%d %H:%M:%S') # 将时间格式化为2022/02/23 08:23:50
last_time = time_obj
last_weiyi = [weiyi]
new_row = [schedule, time_str, last_weiyi]
new_rows.append(new_row)
# 写入新的数据行到输出文件中
with open(output_file, 'a', newline='') as f:
writer = csv.writer(f)
for row in new_rows:
writer.writerow(row)
```
注意:由于数据量很大,上述代码可能需要较长时间才能运行完毕。建议在测试时先读取一小部分数据进行测试。
阅读全文