![](/img/trans.png)
[英]Pandas extract first N% of characters from string column in DataFrame
[英]Replace first n elements in pandas dataframe column
我想用我保存的另一個pd.series替換數據框中列的前n
元素。 舉個例子
category price store testscore
0 Cleaning 11.42 Walmart NaN
1 Cleaning 23.50 Dia NaN
2 Entertainment 19.99 Walmart NaN
3 Entertainment 15.95 Fnac NaN
4 Tech 55.75 Dia NaN
5 Tech 111.55 Walmart NaN
在這里,我想用一組新的字符串替換testscore中的前三個NaN。
假設我有一個變量:
cats = pd.Series(df['category'][0:2])
所以我可以將其放在testscore列中嗎?
category price store testscore
0 Cleaning 11.42 Walmart Cleaning
1 Cleaning 23.50 Dia Cleaning
2 Entertainment 19.99 Walmart Entertainment
3 Entertainment 15.95 Fnac NaN
4 Tech 55.75 Dia NaN
5 Tech 111.55 Walmart NaN
但是,每當我嘗試執行此操作時,它將無法正常工作。
創建此偽數據集的代碼:
import pandas as pd
import numpy as np
df = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'],
'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'],
'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55],
'testscore': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})
print(df)
df2 = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'],
'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'],
'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55],
'testscore': ['Cleaning', 'Cleaning', 'Entertainment', np.nan, np.nan, np.nan]})
print(df2)
只需使用df.loc :
import pandas as pd
import numpy as np
df = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'],
'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'],
'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55],
'testscore': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})
cats = pd.Series(df['category'][:3]) # 3 elements
df.loc[:3,'testscore'] = cats # Assign first 3
print(df)
你會得到:
category price store testscore
0 Cleaning 11.42 Walmart Cleaning
1 Cleaning 23.50 Dia Cleaning
2 Entertainment 19.99 Walmart Entertainment
3 Entertainment 15.95 Fnac NaN
4 Tech 55.75 Dia NaN
5 Tech 111.55 Walmart NaN
將fillna
與參數limit
一起使用:
df['testscore'] = df.testscore.fillna(df.category, limit=3)
df
輸出:
category price store testscore
0 Cleaning 11.42 Walmart Cleaning
1 Cleaning 23.50 Dia Cleaning
2 Entertainment 19.99 Walmart Entertainment
3 Entertainment 15.95 Fnac NaN
4 Tech 55.75 Dia NaN
5 Tech 111.55 Walmart NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.