2017-05-12 41 views
0

我有一個數據幀,其是具有以下結構的:插入多組數據的單個索引值在一個數據幀

A B C 
0 1 1 0 
1 2 2 1 
2 3 3 2 
3 4 4 3 

索引和列C都被設置爲具有相同的值。這是因爲我創建了一個數據框,它使用日期作爲索引來覆蓋每年的每一天,並且我有大量的數據集合,其日期存儲在C列中。在實踐中,我可以存儲儘可能多的數據,這可以涵蓋了一年中的大部分時間,但是會有一些日子沒有數據,我的數據框架是通過這種方式來解釋它的。

我想要做的是在一天內啓用對多個讀數的支持。目前我的程序選擇把該行的數據轉換爲與索引列中的日期相匹配的原始數據的日期,所以如果我有以下幾點:

A B C 
2 3 2 

行將由值列C中選擇並插入到像這樣的數據幀:

A B C 
0 1 1 0 
1 2 2 1 
2 2 3 2 
3 4 4 3 

我將如何處理這種情況我在一天兩套讀數,同時保持索引相同,將基於列C值數據的情況。

像這樣:

A B C 
4 3 1 
2 4 1 

而且我希望能夠有以下幾點:

A B C 
0 1 1 0 
1 4 3 1 
1 2 4 1 
2 2 3 2 
3 4 4 3 

我想保留索引一樣,使數據幀的結構保持在在覆蓋一年中的所有日子以及在多天的時間內可以插入數據的同時保持索引值相同。

+0

cd123 - 讓我們知道我的解決方案適用於您 – pshep123

+0

不幸的是,雖然此解決方案很有用,但我並沒有爲我所需要的工作而工作。部分原因是我沒有指定我的文章中的數據框是我所擁有的簡化版本。否則,通過插入我想追加到列表中的元素並在需要時將列表追加到框架並在之後進行排序,從而獲得我想要的完全不同的方法。無論如何感謝您的意見。 – cd123

回答

1

這應該爲你做它:

設置:

import pandas as pd 
import io 

a = io.StringIO(u''' 
A B C 
1 1 0 
2 2 1 
3 3 2 
4 4 3 
''') 

df = pd.read_csv(a, delim_whitespace = True) 

b = io.StringIO(u''' 
A B C 
4 3 1 
2 4 1 
''') 

dfX = pd.read_csv(b, delim_whitespace = True) 

處理:

df = df.loc[~df['C'].isin(dfX['C'])] 
df = df.append(dfX).sort_values(by = 'C') 
df.index = df['C'].values 

輸出:

A B C 
0 1 1 0 
1 4 3 1 
1 2 4 1 
2 3 3 2 
3 4 4 3 
相關問題