![](/img/trans.png)
[英]How do I add a list of values for a parameter to a group of dataframes, where that parameter has a different value for each dataframe?
[英]How do I join dataframes in python where each dataframe has a column which represents different processes values at a specific time
我的標題有點亂,但希望下面的信息足夠具體。
我有一個腳本,它從在線商店抓取商品的名稱和價格,並將它們存儲在 pandas dataframe 中,其中包含 2 列名稱和價格。 該腳本定期運行並將數據導出到 csv。 現在我想結合數據來分析不同產品價格隨時間的變化趨勢。 我遇到的問題是,任何一天刮下來的物品不一定與其他日子相同,物品的順序也不同。 我如何能夠將價格數據存儲在 dataframe 中,其中每一行代表一個特定的產品。
編輯:我的輸入將是幾個這樣的表,其中每個表來自特定日期,項目可能不同,順序也可能不同
物品 | 價格 |
---|---|
車 | 100 |
自行車 | 200 |
... | ... |
我想要的 Output:
物品 | 昨天 | 今天 | 明天 | ... |
---|---|---|---|---|
車 | 100 | 200 | 150 | 不適用 |
房子 | 2000 | 2000 | 2000 | ... |
自行車 | 不適用 | 10 | 10 | ... |
... | ... | ... | ... | ... |
也許您可以對數據進行分區並生成 pivot 表來產生您想要的結果。
import pandas as pd
df = pd.DataFrame({
"Item": ["Car", "Bike", "Car", "Bike", "Car", "Bike",],
"Price": ["100", "", "200", "10", "150", "10"],
})
# Use pd.concat() to join multiple dataframes.
# e.g. - pd.concat([df1, df2])
# Then move onto the next part of this solution
df["partition"] = df.groupby("Item").cumcount()
result = df.pivot(index="Item", columns="partition", values="Price")
print(result)
Output -
partition 0 1 2
Item
Bike 10 10
Car 100 200 150
pandas 中有一個“連續”function:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html
首先:我初始化 DataFrames 並將產品列的“名稱”設置為索引:
df1 = pd.DataFrame({"Name":["product1", "product2", "product3"],
"Price_date1":[1,2,3]}).set_index("Name")
df2 = pd.DataFrame({"Name":["product1", "product2", "product4"],
"Price_date2":[3,4,5]}).set_index("Name")
然后我連接Dataframes,你可以在這里傳遞多個dataframes的列表
df_con = pd.concat([df1, df2], axis=1)
Output od df_con:
Price_date1 Price_date2
product1 1.0 3.0
product2 2.0 4.0
product3 3.0 NaN
product4 NaN 5.0
導入 pandas 作為 pd 導入 numpy 作為 np
data1 = {'Item':['Car','House','Bike'], 'Price':[1.0,2.1,3.0]}
data2 = {'Item':['Car','House','Umbrella'], 'Price':[1.2,2.2,5.2]}
data1 = pd.DataFrame(data1)
data2 = pd.DataFrame(data2)
data_list = [data1, data2]
result = pd.DataFrame([])
for i, cr_df in enumerate(data_list):
data = cr_df.rename(columns={'Price':'Day'+str(i)}).set_index('Item').transpose()
if i == 0:
result = data.copy()
else:
result = result.append(data)
result = result.transpose()
Day0 Day1
Bike 3.0 nan
Car 1.0 1.2
House 2.1 2.2
Umbrella nan 5.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.