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