【问题标题】:Writting selective data values as float in csv/txt file using Pandas in Python使用 Python 中的 Pandas 将选择性数据值写入 csv/文本文件中的浮点数
【发布时间】:2021-07-03 01:55:15
【问题描述】:

使用互联网信息/使用此平台的信息,我设法编写了一个小的 Python 代码,它读取 200 个 csv,然后能够区分与列索引对应的不同值。现在我有兴趣编写一个 csv/txt 文件,其中 2 列应该有一个变量 "time" 和另一个变量 "alpha.water" 。使用以下 Python 脚本,我可以编写一个变量“时间”:

# importing different modules
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import math 
import importlib

totalt = 200 # defining the total time   
for i in range (0,totalt):
    df = pd.read_csv('interpolate_lwc_t_%d.csv'%i, skiprows=0)

    # writting file corresponding to this data
    x1 = df['Time'].values
    tfile = open('test.txt', 'a')
    tfile.write(str (x1))
    tfile.close()

这个“时间”变量也用方括号[]写成如下:

[0.008][0.009][0.01][0.011][0.012][0.013][0.014][0.015][0.016][0.017][0.018][0.019][0.02][0.021][0.022][0.023][0.024][0.025][0.026][0.027][0.028][0.029][0.03][0.031][0.032][0.033][0.034][0.035][0.036][0.037][0.038][0.039][0.04][0.041][0.042][0.043][0.044][0.045][0.046][0.047][0.048][0.049][0.05][0.051][0.052][0.053][0.054][0.055][0.056][0.057][0.058][0.059][0.06][0.061][0.062][0.063][0.064][0.065][0.066][0.067][0.068][0.069][0.07][0.071]

有没有更清晰的方法来编写 csv/txt 文件,其中在变量“Time”和“alpha.water”的两列中写入相应的值?我期待以下输出:

Time        alpha.water
0.008       0.01147
0.009       0.011472
0.010       0.011473

任何建议/评论都会有很大帮助。提前致谢。

【问题讨论】:

    标签: python pandas csv file


    【解决方案1】:

    如果您已经有一个从 CSV 创建的数据框并想要另一个 CSV,您可以分两步完成。

    首先,将 CSV 加载到您的数据框后,删除您不需要的列。选择你想要的。参考这篇文章:https://stackoverflow.com/a/11287278/6826556

    要将不同的数据帧合并为一个,请使用 pandas 的 concat 功能。 假设您在循环之外有一个名为 df_all 的数据框,您可以将当前的数据框逐步连接到该数据框。

    # outside of loop:
    df_all = pd.DataFrame()
    
    # inside loop
    df_all = pd.concat([df_all, df], ignore_index=True)
    

    然后,您可以将新数据框(仅包含所需列并且是所有其他列的组合)直接导出到新的 CSV 文件。查看this link 了解如何操作。

    【讨论】:

    • 非常感谢您的回复,但正如您所见,我正在按照循环读取每个文件,因此我不是完整的数据框,我的数据框会根据循环进行更改。那么可能我应该将所有数据框存储在另一个变量中,您能否评论一下如何做到这一点?
    • 非常感谢您的帮助。根据您的建议,我尝试使用链接 link 并将代码修改为 for i in range (0,totalt): df = pd.read_csv('interpolate_lwc_t_%d.csv'%i, skiprows=0) newdf = df[["Time", "alpha.water"]] print(newdf) 现在我能够正确打印所需的结果,但我无法将其保存为 csv/文本文件,因为它在循环,还有什么帮助吗?
    • 看看我更新的答案,你可以连接帧。
    • 非常感谢,对于更新的答案,当我运行此代码时,它向我显示“df_all”未定义的错误,我需要如何定义它?尽管在帖子中您提到我需要在循环之前定义。抱歉对 Python 太天真了。
    • 非常感谢您的帮助,工作完美,所以最后我写道:import os import numpy as np import pandas as pd totalt = 200 # defining the total time df_all = pd.DataFrame() # stack flow for i in range (1,totalt): df = pd.read_csv('interpolate_lwc_t_%d.csv'%i, skiprows=0) newdf = df[["Time", "alpha.water"]] df_all = pd.concat([df_all, newdf], ignore_index=True) # stackflow df_all.to_csv (r'combined_all_nofc1.csv', index = False, header=True) # stackflow
    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多