2017-06-15 77 views
0

我有以下數據框:如何將屬性/標籤列添加到數據框?

security ticker $amount 
Apple  AAPL  5000 
Coors  TAP  2000 
Microsoft MSFT  3000 
US Dollar   10000 
Alumina AWC.AU 1000 
Telstra TLS.AU 1000 
AU Dollar   2000 

等等......

我怎樣才能讓這個:

  • 對於每一個空白行「股票」,(取更容易),但最好將屬性美元添加到上面列出的所有證券中,但在下一個證券之前,如果這是有意義的話......所以本質上,我希望它增加美元給Apple,Coors,Microsoft;並添加澳元到氧化鋁,Telstra等。我們可以在額外的列中列出。
  • 如果更容易,我可以將美元,澳元和美元出口到不同的數據框中。
  • 一旦我這樣做了,我想從數據框中刪除「美元」,「澳元」和它們各自的行。

理想情況下,如果我可以添加將是巨大的屬性。這樣我可以通過簡單的查詢搜索總金額美國證券。

任何想法?

回答

1

不是最優雅的解決方案,但也許試試這個嗎?

首先,我重新創建你的數據框:

df = pd.DataFrame({'security': ['Apple', 'Coors', 'Microsoft', 'US Dollar', 'Alumina', 'Telstra', 'AU Dollar'], 
        'ticker': ['AAPL', 'TAP', 'MSFT', "", 'AWC.AU', 'TLS.AU', ""], 
        '$amount': [5000, 2000, 3000, 10000, 1000, 1000, 2000]}) 

然後我用np.where從安全柱

df['Extra Column'] = np.where(df['ticker'] == "", df['security'], np.nan) 
df['Extra Column'] = df['Extra Column'].fillna(method='bfill') 
df['Extra Amount'] = np.where(df['ticker'] == "", df['$amount'], np.nan) 
df['Extra Amount'] = df['Extra Amount'].fillna(method='bfill') 
result = df[df['ticker']!=''] 

輸出提取AU及美元:

$amount security ticker Extra Column Extra Amount 
0  5000  Apple AAPL US Dollar  10000.0 
1  2000  Coors  TAP US Dollar  10000.0 
2  3000 Microsoft MSFT US Dollar  10000.0 
4  1000 Alumina AWC.AU AU Dollar  2000.0 
5  1000 Telstra TLS.AU AU Dollar  2000.0 
+0

所以,這是隻適用於包含這個詞的字符串「美元」呢?如果我說,有日元怎麼辦? – sgerbhctim

+0

良好的通話 - 我只是更新了代碼。 –

+0

嗯..這似乎只創建新的列..我無法獲得額外列中的屬性。原來的方式是有效的,但我們怎麼能彎曲它來基本上指定任何貨幣。 – sgerbhctim