![](/img/trans.png)
[英]Comparing date column values in one dateframe with two date column in another dataframe by row in Pandas
[英]Add a row in pandas dataframe for every date in another dateframe column
我有一個 dataframe 偶爾包含一個符號條目,然后是一個計數。 我想擴展 dataframe 以便每個符號包含 dataframe 中整個日期范圍的一行。 我想為在某個日期沒有符號條目的計數輸入一個值“0”。
我的 dataframe:
dates = ['2021-01-01','2021-01-02','2021-01-03']
symbol = ['a','b','a']
count = [1,2,3]
df = pd.DataFrame({'Mention Datetime': dates,
'Symbol': symbol,
'Count':count})
Mention Datetime Symbol Count
0 2021-01-01 a 1
1 2021-01-02 b 2
2 2021-01-03 a 3
我希望它看起來像什么:
Mention Datetime Symbol Count
0 2021-01-01 a 1
1 2021-01-02 a 0
2 2021-01-03 a 3
3 2021-01-01 b 0
4 2021-01-02 b 2
5 2021-01-03 b 0
使用pivot_table
然后stack
:
df = df.pivot_table(index='Mention Datetime',
columns='Symbol', fill_value=0
).stack().reset_index()
Output:
Mention Datetime Symbol Count
0 2021-01-01 a 1
1 2021-01-01 b 0
2 2021-01-02 a 0
3 2021-01-02 b 2
4 2021-01-03 a 3
5 2021-01-03 b 0
您可以使用從相關列的唯一值創建的新多索引重新索引。
import pandas as pd
from io import StringIO
s = '''
Mention Datetime Symbol Count
2021-01-01 a 1
2021-01-02 b 2
2021-01-03 a 3
'''
df = pd.read_fwf(StringIO(s), header=1)
df = df.set_index(['Mention Datetime', 'Symbol'])
df
Count
Mention Datetime Symbol
2021-01-01 a 1
2021-01-02 b 2
2021-01-03 a 3
df = df.reindex(
pd.MultiIndex.from_product(
[
df.index.get_level_values('Mention Datetime').unique(),
df.index.get_level_values('Symbol').unique()
]
)
).fillna(0)
df
Count
Mention Datetime Symbol
2021-01-01 a 1.0
b 0.0
2021-01-02 a 0.0
b 2.0
2021-01-03 a 3.0
b 0.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.