如何将 concat 数据框的日期列与 N/As 合并
How do I merge the date column of a concat data frame with N/As
我有一个使用空白数据框制作的数据框,我通过循环将多个数据框连接到该数据框上。使用以下内容。
final = pd.concat([final, out], axis=1, sort=True)
这给了我类似于
的东西
Date Count Date Count Date Count Date Count
1/1/2019 1 1/1/2019 1 N/A N/A 1/1/2019 1
1/2/2019 1 1/2/2019 1 1/2/2019 1 1/2/2019 1
1/3/2019 1 1/3/2019 1 1/3/2019 1 1/3/2019 1
N/A N/A 1/4/2019 1 1/4/2019 1 1/4/2019 1
1/5/2019 1 1/5/2019 1 1/5/2019 1 1/5/2019 1
1/6/2019 1 1/6/2019 1 1/6/2019 1 N/A N/A
N/A N/A 1/7/2019 1 1/7/2019 1 1/7/2019 1
1/8/2019 1 1/8/2019 1 N/A N/A 1/8/2019 1
1/9/2019 1 1/9/2019 1 1/9/2019 1 1/9/2019 1
N/A N/A N/A N/A 1/10/2019 1 1/10/2019 1
1/11/2019 1 1/11/2019 1 1/11/2019 1 1/11/2019 1
1/12/2019 1 1/12/2019 1 1/12/2019 1 1/12/2019 1
1/13/2019 1 1/13/2019 1 1/13/2019 1 N/A N/A
然而我的目标是得到这个
Date Count Count Count Count
1/1/2019 1 1 N/A 1
1/2/2019 1 1 1 1
1/3/2019 1 1 1 1
1/4/2019 N/A 1 1 1
1/5/2019 1 1 1 1
1/6/2019 1 1 1 N/A
1/7/2019 N/A 1 1 1
1/8/2019 1 1 N/A 1
1/9/2019 1 1 1 1
1/10/2019 N/A N/A 1 1
1/11/2019 1 1 1 1
1/12/2019 1 1 1 1
1/13/2019 1 1 1 N/A
当您想使用合并时,您正在使用 concat
。我假设 out 的数据包含一些将要丢失的值。每轮连接应该是:
final = final.merge(out, on='Date', how='outer')
例如,您可能还想使用对您的数据有意义的 suffixes
。 suffixes=['','new_data']
在合并中(E.x。final = final.merge(out, on='Date', how='outer',suffixes=['','new_data'])
。这将帮助您了解哪些数据来自哪里
据我所知,您想要将 Date
列组合在一起,以便第一个 Date
列中没有缺失值。
这里是输入数据
df = pd.read_clipboard()
print(df)
Date Count Date.1 Count.1 Date.2 Count.2 Date.3 Count.3
0 1/1/2019 1.0 1/1/2019 1.0 NaN NaN 1/1/2019 1.0
1 1/2/2019 1.0 1/2/2019 1.0 1/2/2019 1.0 1/2/2019 1.0
2 1/3/2019 1.0 1/3/2019 1.0 1/3/2019 1.0 1/3/2019 1.0
3 NaN NaN 1/4/2019 1.0 1/4/2019 1.0 1/4/2019 1.0
4 1/5/2019 1.0 1/5/2019 1.0 1/5/2019 1.0 1/5/2019 1.0
5 1/6/2019 1.0 1/6/2019 1.0 1/6/2019 1.0 NaN NaN
6 NaN NaN 1/7/2019 1.0 1/7/2019 1.0 1/7/2019 1.0
7 1/8/2019 1.0 1/8/2019 1.0 NaN NaN 1/8/2019 1.0
8 1/9/2019 1.0 1/9/2019 1.0 1/9/2019 1.0 1/9/2019 1.0
9 NaN NaN NaN NaN 1/10/2019 1.0 1/10/2019 1.0
10 1/11/2019 1.0 1/11/2019 1.0 1/11/2019 1.0 1/11/2019 1.0
11 1/12/2019 1.0 1/12/2019 1.0 1/12/2019 1.0 1/12/2019 1.0
12 1/13/2019 1.0 1/13/2019 1.0 1/13/2019 1.0 NaN NaN
一种可能的方法是用其他 Date
列一次填充 Date
列 NaN
s(在这种方法中,Date.3
似乎不需要)
df['Date'].fillna(df['Date.1'], inplace=True)
df['Date'].fillna(df['Date.2'], inplace=True)
df = df.drop(['Date.1','Date.2','Date.3'], axis=1)
输出
print(df)
Date Count Count.1 Count.2 Count.3
0 1/1/2019 1.0 1.0 NaN 1.0
1 1/2/2019 1.0 1.0 1.0 1.0
2 1/3/2019 1.0 1.0 1.0 1.0
3 1/4/2019 NaN 1.0 1.0 1.0
4 1/5/2019 1.0 1.0 1.0 1.0
5 1/6/2019 1.0 1.0 1.0 NaN
6 1/7/2019 NaN 1.0 1.0 1.0
7 1/8/2019 1.0 1.0 NaN 1.0
8 1/9/2019 1.0 1.0 1.0 1.0
9 1/10/2019 NaN NaN 1.0 1.0
10 1/11/2019 1.0 1.0 1.0 1.0
11 1/12/2019 1.0 1.0 1.0 1.0
12 1/13/2019 1.0 1.0 1.0 NaN
我有一个使用空白数据框制作的数据框,我通过循环将多个数据框连接到该数据框上。使用以下内容。
final = pd.concat([final, out], axis=1, sort=True)
这给了我类似于
Date Count Date Count Date Count Date Count
1/1/2019 1 1/1/2019 1 N/A N/A 1/1/2019 1
1/2/2019 1 1/2/2019 1 1/2/2019 1 1/2/2019 1
1/3/2019 1 1/3/2019 1 1/3/2019 1 1/3/2019 1
N/A N/A 1/4/2019 1 1/4/2019 1 1/4/2019 1
1/5/2019 1 1/5/2019 1 1/5/2019 1 1/5/2019 1
1/6/2019 1 1/6/2019 1 1/6/2019 1 N/A N/A
N/A N/A 1/7/2019 1 1/7/2019 1 1/7/2019 1
1/8/2019 1 1/8/2019 1 N/A N/A 1/8/2019 1
1/9/2019 1 1/9/2019 1 1/9/2019 1 1/9/2019 1
N/A N/A N/A N/A 1/10/2019 1 1/10/2019 1
1/11/2019 1 1/11/2019 1 1/11/2019 1 1/11/2019 1
1/12/2019 1 1/12/2019 1 1/12/2019 1 1/12/2019 1
1/13/2019 1 1/13/2019 1 1/13/2019 1 N/A N/A
然而我的目标是得到这个
Date Count Count Count Count
1/1/2019 1 1 N/A 1
1/2/2019 1 1 1 1
1/3/2019 1 1 1 1
1/4/2019 N/A 1 1 1
1/5/2019 1 1 1 1
1/6/2019 1 1 1 N/A
1/7/2019 N/A 1 1 1
1/8/2019 1 1 N/A 1
1/9/2019 1 1 1 1
1/10/2019 N/A N/A 1 1
1/11/2019 1 1 1 1
1/12/2019 1 1 1 1
1/13/2019 1 1 1 N/A
当您想使用合并时,您正在使用 concat
。我假设 out 的数据包含一些将要丢失的值。每轮连接应该是:
final = final.merge(out, on='Date', how='outer')
例如,您可能还想使用对您的数据有意义的 suffixes
。 suffixes=['','new_data']
在合并中(E.x。final = final.merge(out, on='Date', how='outer',suffixes=['','new_data'])
。这将帮助您了解哪些数据来自哪里
据我所知,您想要将 Date
列组合在一起,以便第一个 Date
列中没有缺失值。
这里是输入数据
df = pd.read_clipboard()
print(df)
Date Count Date.1 Count.1 Date.2 Count.2 Date.3 Count.3
0 1/1/2019 1.0 1/1/2019 1.0 NaN NaN 1/1/2019 1.0
1 1/2/2019 1.0 1/2/2019 1.0 1/2/2019 1.0 1/2/2019 1.0
2 1/3/2019 1.0 1/3/2019 1.0 1/3/2019 1.0 1/3/2019 1.0
3 NaN NaN 1/4/2019 1.0 1/4/2019 1.0 1/4/2019 1.0
4 1/5/2019 1.0 1/5/2019 1.0 1/5/2019 1.0 1/5/2019 1.0
5 1/6/2019 1.0 1/6/2019 1.0 1/6/2019 1.0 NaN NaN
6 NaN NaN 1/7/2019 1.0 1/7/2019 1.0 1/7/2019 1.0
7 1/8/2019 1.0 1/8/2019 1.0 NaN NaN 1/8/2019 1.0
8 1/9/2019 1.0 1/9/2019 1.0 1/9/2019 1.0 1/9/2019 1.0
9 NaN NaN NaN NaN 1/10/2019 1.0 1/10/2019 1.0
10 1/11/2019 1.0 1/11/2019 1.0 1/11/2019 1.0 1/11/2019 1.0
11 1/12/2019 1.0 1/12/2019 1.0 1/12/2019 1.0 1/12/2019 1.0
12 1/13/2019 1.0 1/13/2019 1.0 1/13/2019 1.0 NaN NaN
一种可能的方法是用其他 Date
列一次填充 Date
列 NaN
s(在这种方法中,Date.3
似乎不需要)
df['Date'].fillna(df['Date.1'], inplace=True)
df['Date'].fillna(df['Date.2'], inplace=True)
df = df.drop(['Date.1','Date.2','Date.3'], axis=1)
输出
print(df)
Date Count Count.1 Count.2 Count.3
0 1/1/2019 1.0 1.0 NaN 1.0
1 1/2/2019 1.0 1.0 1.0 1.0
2 1/3/2019 1.0 1.0 1.0 1.0
3 1/4/2019 NaN 1.0 1.0 1.0
4 1/5/2019 1.0 1.0 1.0 1.0
5 1/6/2019 1.0 1.0 1.0 NaN
6 1/7/2019 NaN 1.0 1.0 1.0
7 1/8/2019 1.0 1.0 NaN 1.0
8 1/9/2019 1.0 1.0 1.0 1.0
9 1/10/2019 NaN NaN 1.0 1.0
10 1/11/2019 1.0 1.0 1.0 1.0
11 1/12/2019 1.0 1.0 1.0 1.0
12 1/13/2019 1.0 1.0 1.0 NaN