2
目前,我从文件中读取,它是生成此文件(output.txt
):如果列值来自不同的文件,如何将列插入数据框?
Atom nVa avgppm stddev delta
1.H1' 2 5.73649 0.00104651803616 1.0952e-06
1.H2' 1 4.85438
1.H8 1 8.05367
10.H1' 3 5.33823 0.136655138213 0.0186746268
10.H2' 1 4.20449
10.H5 3 5.27571333333 0.231624986634 0.0536501344333
10.H6 5 7.49485 0.0285124165935 0.0008129579
这是读取生成此文件(我从一个文本文件读取生成这些值)的代码
df = pd.read_csv(expAtoms, sep = ' ', header = None)
df.columns = ["Atom","ppm"]
gb = (df.groupby("Atom", as_index=False).agg({"ppm":["count","mean","std","var"]}).rename(columns={"count":"nVa", "mean":"avgppm","std":"stddev","var":"delta"}))
gb.head()
gb.columns = gb.columns.droplevel()
gb = gb.rename(columns={"":"Atom"})
gb.to_csv("output.txt", sep =" ", index=False)
在我nVa
列和我avgppm
柱之间,我想插入叫predppm
另一列。我想从一个名为file.txt
文件看起来像这样得到的数值:
5.H6 7.72158 0.3
6.H6 7.70272 0.3
7.H8 8.16859 0.3
1.H1' 7.65014 0.3
9.H8 8.1053 0.3
10.H6 7.5231 0.3
我如何检查是否在file.txt
第一列中的值=第一列的output.txt
,如果它的价值,将第二列file.txt
的值插入到我的输出文件中nVa列和avgppm列之间的列中?
例如,1.H1'
是在output.txt的和file.txt的,所以我想创建一个在我output.txt的文件称为predppm
柱和具有值7.65014
(它来自的file.txt的第二列)插入为1.H1'
原子。
我想我明白如何添加列,但仅限于可以用于groupby的函数,但我不知道如何在输出中插入任意列。
现在我得到一个错误,说'TypeError:initial_value必须是unicode或None,不是str'。我为我的文本文件做了一个变量,所以 'output = output.txt',然后做了'data_file = StringIO(output)',这是我得到的错误 – user8290579
对不起,我的答案在python3中有效。使其在Python 2中工作,看到我上面的新评论 – Hazzles
对不起,我只是有点困惑。你是说'data'和'other_data'是代码本身定义的字符串?但对于我'data'和'other_data'是我正在阅读的文本文件。将'data_file = StringIO(output)'放在哪里'output =“output.txt”'是否会出错?我对实际输入的内容感到困惑,对不起! – user8290579