![](/img/trans.png)
[英]Merge columns and fill the empty space with the merged data using Pandas Python
[英]Fill in empty space by merging columns using Pandas Python
我是 Python 菜鳥。 我有一個非結構化文本文件,我試圖將其捕獲到 dataframe 並導出到 excel。我需要合並 38 到 36、45 到 43 和 79 到 78,用合並列上的數據填充空白區域。
虛擬數據集
0 | 5個 | 36 | 38 | 43 | 45 | 78 | 79 | |
---|---|---|---|---|---|---|---|---|
1個 | 一種 | 01JUN2022 | 1.2 | 乙 | 1.2 | |||
2個 | C | 01JUN2022 | 1.4 | 丁 | 1.4 | |||
3個 | 乙 | 01JUN2022 | 1.5 | F | 1.6 | |||
4個 | G | 01JUN2022 | 1.7 | H | 1.7 | |||
5個 | 我 | 01JUN2022 | 1.4 | 傑 | 1.8 | |||
6個 | 鉀 | 01JUN2022 | 1.7 | 大號 | 1.3 | |||
1個 | 一種 | 01JUN2022 | 1.2 | 乙 | 1.2 | |||
2個 | C | 01JUN2022 | 1.4 | 丁 | 1.4 | |||
3個 | 乙 | 01JUN2022 | 1.5 | F | 1.6 | |||
4個 | G | 01JUN2022 | 1.7 | H | 1.7 | |||
5個 | 我 | 01JUN2022 | 1.4 | 傑 | 1.8 | |||
6個 | 鉀 | 01JUN2022 | 1.7 | 大號 | 1.3 |
必填 output
0 | 5個 | 36 | 43 | 79 | |
---|---|---|---|---|---|
1個 | 一種 | 01JUN2022 | 1.2 | 乙 | 1.2 |
2個 | C | 01JUN2022 | 1.4 | 丁 | 1.4 |
3個 | 乙 | 01JUN2022 | 1.5 | F | 1.6 |
4個 | G | 01JUN2022 | 1.7 | H | 1.7 |
5個 | 我 | 01JUN2022 | 1.4 | 傑 | 1.8 |
6個 | 鉀 | 01JUN2022 | 1.7 | 大號 | 1.3 |
1個 | 一種 | 01JUN2022 | 1.2 | 乙 | 1.2 |
2個 | C | 01JUN2022 | 1.4 | 丁 | 1.4 |
3個 | 乙 | 01JUN2022 | 1.5 | F | 1.6 |
4個 | G | 01JUN2022 | 1.7 | H | 1.7 |
5個 | 我 | 01JUN2022 | 1.4 | 傑 | 1.8 |
6個 | 鉀 | 01JUN2022 | 1.7 | 大號 | 1.3 |
首先將''
轉換為NaN
,如下所示
df = df.replace(r'^\s*$', np.nan, regex=True)
然后可以使用pandas.Series.combine_first
df['36'] = df['36'].combine_first(df['38'])
df['43'] = df['43'].combine_first(df['45'])
df['79'] = df['79'].combine_first(df['78'])
[Out]:
id 0 5 36 38 43 45 78 79
0 1 A 01JUN2022 1.2 1.2 B B NaN 1.2
1 2 C 01JUN2022 1.4 1.4 D D NaN 1.4
2 3 E 01JUN2022 1.5 NaN F NaN 1.6 1.6
3 4 G 01JUN2022 1.7 NaN H NaN 1.7 1.7
4 5 I 01JUN2022 1.4 NaN J NaN 1.8 1.8
5 6 K 01JUN2022 1.7 NaN L NaN 1.3 1.3
6 1 A 01JUN2022 1.2 1.2 B B NaN 1.2
7 2 C 01JUN2022 1.4 1.4 D NaN 1.4 1.4
8 3 E 01JUN2022 1.5 1.5 F NaN 1.6 1.6
9 4 G 01JUN2022 1.7 NaN H NaN 1.7 1.7
10 5 I 01JUN2022 1.4 NaN J J NaN 1.8
11 6 K 01JUN2022 1.7 NaN L NaN NaN 1.3
最后,可以刪除不需要的列或 select 顯示如下
df = df[['0', '5', '36', '43', '79']]
[Out]:
0 5 36 43 79
0 A 01JUN2022 1.2 B 1.2
1 C 01JUN2022 1.4 D 1.4
2 E 01JUN2022 1.5 F 1.6
3 G 01JUN2022 1.7 H 1.7
4 I 01JUN2022 1.4 J 1.8
5 K 01JUN2022 1.7 L 1.3
6 A 01JUN2022 1.2 B 1.2
7 C 01JUN2022 1.4 D 1.4
8 E 01JUN2022 1.5 F 1.6
9 G 01JUN2022 1.7 H 1.7
10 I 01JUN2022 1.4 J 1.8
11 K 01JUN2022 1.7 L 1.3
這給出了所需的 output。
筆記:
還有其他方法可以刪除NaN
。 為此,請參閱: How to remove nan value while combining two column in Panda Data frame?
刪除Python中的列也有其他方法,如果想了解更多,請參見:刪除Pandas中的列 DataFrame
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.