我的資料框包含兩個 Column column_1 和 column_2 當熊貓資料框中的 column_2 中存在 null 時,我想將 column_1 當前行與 column_2 prev 值連接起來。
|column_1 |column_2 |
|-------- |-------- |
|A:6400 | A:6400 |
|A:6406 | A:6406 |
|A:5607 | A:5607 |
|B:40AB4 | null |
|A:5609 | A:5609 |
|B:5607 | null |
|B:5608 | null |
生成的資料框應如下所示。
|column_1 |column_2 |
|-------- |-------------- |
|A:6400 | A:6400 |
|A:6406 | A:6406 |
|A:5607 | A:5607 |
|B:40AB4 | A:5607B:40AB4 |
|A:5609 | A:5609 |
|B:5607 |A:5609B:5607 |
|B:5608 | A:5609B:5608 |
當我嘗試使用回圈時,出現以下錯誤。我嘗試了幾種方法,但 id 不起作用。
Series 的真值是模棱兩可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。任何幫助將不勝感激。
uj5u.com熱心網友回復:
IIUC,您可以使用面具和ffill:
# locate the 'null' values
s = df['column2'].eq('null')
# concatenate
df['column2'] = df['column2'].mask(s).ffill() df['column1'].where(s, '')
輸出:
column1 column2
0 A:6400 A:6400
1 A:6406 A:6406
2 A:5607 A:5607
3 B:40AB4 A:5607B:40AB4
4 A:5609 A:5609
5 B:5607 A:5609B:5607
6 B:5608 A:5609B:5608
uj5u.com熱心網友回復:
想法是創建缺失值而不是nulls ,然后只為 s 行加入具有前向填充錯誤值null的列:
#if null is not Nonetype or missing values
df['column_2'] = df['column_2'].replace({'null':np.nan})
df.loc[df['column_2'].isna(), 'column_2'] = df['column_2'].ffill() df['column_1']
print (df)
column_1 column_2
0 A:6400 A:6400
1 A:6406 A:6406
2 A:5607 A:5607
3 B:40AB4 A:5607A:5607
4 A:5609 A:5609
5 B:5607 A:5609A:5609
6 B:5608 A:5609A:5609
uj5u.com熱心網友回復:
import pandas as pd
df = pd.DataFrame({
'column_1': ['A:6400', 'A:6406', 'A:5607', 'B:40AB4', 'A:5609', 'B:5607', 'B:5608'],
'column_2': ['A:6400', 'A:6406', 'A:5607', 'null', 'A:5609', 'null', 'null']
})
# Select missing values
sel = df['column_2'] == 'null'
# Convert "null" values to `None`
df.loc[sel, 'column_2'] = None
# Forward-fill null values
df['column_2'] = df['column_2'].ffill()
# Append string from "column_1" for selected values
df.loc[sel, 'column_2'] = df.loc[sel, 'column_2'] df.loc[sel, 'column_1']
print(df)
給
col1 col2
0 A:6400 A:6400
1 A:6406 A:6406
2 A:5607 A:5607
3 B:40AB4 A:5607B:40AB4
4 A:5609 A:5609
5 B:5607 A:5609B:5607
6 B:5608 A:5609B:5608
uj5u.com熱心網友回復:
使用索引:
df.loc[df['column_2'] == 'null', 'column_2'] = df['column_2'].replace('null', np.nan).ffill() df['column_1']
print(df)
# Output
column_1 column_2
0 A:6400 A:6400
1 A:6406 A:6406
2 A:5607 A:5607
3 B:40AB4 A:5607B:40AB4
4 A:5609 A:5609
5 B:5607 A:5609B:5607
6 B:5608 A:5609B:5608
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/444925.html
下一篇:按ID創建具有多個唯一值的變數
