gpt4 book ai didi

python - Python 中的数据格式化和操作

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:23 25 4
gpt4 key购买 nike

我想将文本文件中的数据格式化为特定格式。我的数据文件包含超过 120000 行,但我在此处发布了截断的数据。数据文件具有不同频率的 R、L、G、C 数据(此处 3 行中的 3 个频率)。该文件只有 2 列,第一列是“Freq”,第二列是 RLGC 数据之一。现在我想将数据处理为另一种格式(比方说,目标 .txt)。这是 link数据的。我想将其转换为目标文件,如 this .

这是我的代码:

import pandas as pd

#create DataFrame from csv with columns f and v
df = pd.read_csv('data_in.txt', sep="\s+", names=['freq','v'])
#df = df.astype(float).convert_objects()

#boolean mask for identify columns of new df
m = df['v'].str.endswith('R', 'L', 'G', 'C')
#new column by replace NaNs by forward filling
df['g'] = df['v'].where(m).ffill()
#get original ordering for new columns
cols = df['g'].unique()
#remove rows with same values in v and g columns
df = df[df['v'] != df['g']]
#reshape by pivoting with change ordering of columns by reindex
df = df.pivot('freq', 'g', 'v').rename_axis(None, axis=1).reindex(columns=cols).reset_index()

df.columns = [x.replace('R','R1:1').replace('L','L1:1').replace('G','G1:1').replace('C','C1:1') for x in df.columns]
df.to_csv('target.txt', index=False, sep='\t')

但它给出了以下错误:

TypeError: wrapper3() takes from 2 to 3 positional arguments but 5 were given

谁能帮我把它格式化成目标文件。

现在我需要除目标文件之外的另一种格式。我需要格式化成类似“target_2.txt”的格式。这是另一种不寻常的格式类型,也是需要的。您可以看到每个 R1:1、L1:1、G1:1 和 C1:1 数据现在看起来像一个数组 block (尽管不是数组)。如果你仔细观察,对于freq,它应该命名为FORMAT Freq,然后是一个tab,然后是:,然后是 tab,然后是 R1:1。如果你看到,它会像 - FORMAT Freq+tab+:+tab+R1:1。然后是 新行,然后是 2 个制表符,然后是 L1:1。然后又是一个新行,然后是2 tabs,然后是G1:1。最后,C1:1 也是如此。之后是空行,然后是第 1 行数据、第 2 行数据并继续。数据值将根据标题行。

如何做第二个目标文件?

我使用的是 Spyder 3.2.6,其中嵌入了 python 3.6.4 64 位。

最佳答案

你不能这样使用str.endswith。对于您似乎要寻找的东西,我会说 str.contains 是您寻找 R 或 L 或...的更好解决方案,例如:

m = df['v'].str.contains('R|L|G|C')

然后你的代码直到 pivot。我在 pivot 行遇到了一个错误,这是由带有 nan 的行引起的,因此您可能需要一个 dropna 并且您可以重命名同时列:

df = (df.dropna().pivot('freq', 'g', 'v').rename_axis(None, axis=1)
.reindex(columns=cols).reset_index()
.rename(columns={col:'{}1:1'.format(col) for col in cols}))

df 看起来像:

       freq      R1:1      L1:1      G1:1      C1:1
0 0.00E+00 2.66E+00 3.00E-07 2.76E-16 1.58E-10
1 1.00E+06 2.89E+00 3.10E-07 1.72E-05 1.46E-10
2 2.00E+06 2.98E+00 3.13E-07 3.43E-05 1.45E-10
3 3.00E+06 3.07E+00 3.15E-07 5.15E-05 1.44E-10

关于python - Python 中的数据格式化和操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51848977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com