python - 对 pandas 使用正确的分隔符
问题描述
我正在使用 pandas 读取一个 csv 文件,将其排序为“正则表达式”中的指定值,然后用排序后的数据吐出一个新的 csv 文件。我的输出看起来很棒,除了它看起来像这样并且都被列为在 csv 文件的一行中
row 1 row 2
" 1 2 3 4 5 6 7 8 9 10 11 12" "1 2 3 4 5 6 7 8 9 10 11 12"
当我真的想要它时:
row 1 row 2 row 3 row 4
1 2 3 4
将数据分成单独的行的正确分隔符方法是什么?我已经尝试了很多组合,但还没有任何效果。在此文件的末尾,我将在我的 csv 文件中附上一段实际数据。
File = 'file'
out_file ='out_file'
df = pd.read_csv(File)
dffilter = df.filter(regex='201411')
dffilter.to_csv(blank)
"20141107T204206Z 28.00 82.82 239.93 1.849e-01 5.590e-02 1.4210e+02 -9.0000e+00 6.686 1 13.88 -9.00 0.01580 1 8 -9.0 -9.0
20141107T204334Z 28.00 83.06 240.19 2.067e-01 5.547e-02 1.1299e+02 -9.0000e+00 6.840 97 13.93 -9.00 0.02789 1 8 -9.0 -9.0
等等。
解决方案
你可以试试这个
# read all columns except 1st as datasets
df = pd.read_csv('csvFile.csv', header=None).iloc[:, 1:]
# read 1st column as columns of the data and save them into a list
headers = pd.read_csv('csvFile.csv', header=None).iloc[:, 0].tolist()
# transpose the data
df = df.transpose()
# rename columns
df.columns = headers
df.reset_index(drop=True)
print(df)
20141107T204206Z 20141107T204334Z
0 28.0000 28.00000
1 82.8200 83.06000
2 239.9300 240.19000
3 0.1850 0.20700
4 0.0559 0.05550
5 142.0000 113.00000
6 -9.0000 -9.00000
7 6.6860 6.84000
8 1.0000 97.00000
9 13.8800 13.93000
10 -9.0000 -9.00000
11 0.0158 0.02789
12 1.0000 1.00000
13 8.0000 8.00000
14 -9.0000 -9.00000
15 -9.0000 -9.00000
推荐阅读
- javascript - 为什么 ESLint 看不到 JS 文件的所有引号问题?
- java - selenium项目中的java驱动程序
- excel - 计算两个值一起出现的行
- reactjs - 有没有一种有效的方法可以在没有 react-redux 的情况下将 redux 与 react 一起使用?
- android - 构建如何flutter gradle?它失败了
- mathjax - 将 KaTeX 转换为 MathJax
- android - 退出活动时协程作业是否自动取消?
- python-3.x - ModuleNotFoundError:没有名为“apscheduler”的模块
- apache-spark - Pyspark RDD - 过滤和未过滤的数据
- iis - 类型违反的继承安全规则:'DevExpress.Web.Mvc.DevExpressEditorsBinder'