簡體   English   中英

基於條件的 Pandas DataFrame 切片列

[英]Pandas DataFrame Slice Column Based on Condition

我希望根據條件對數據幀列中的行進行切片 - 我知道我可以使用 .loc 根據給定條件為 df 列中的行分配特定值,但是我只需要條件來確定切片的數量。

例如,如果該行以 'A' 開頭,我想要前 6 個字符 ([:6]),而如果它以 'B' 開頭,我想要它有前 8 個字符 ([:8])。

我這樣做是為了在使用 pd.merge() 與另一個數據框執行內部連接之前將數據轉換為正確的格式

.loc。 我可以使用 df.loc[df['column'][:1] == 'A'],但它沒有給我滿足條件的行的索引。 我能想到的最佳解決方案是創建一個包含所有滿足條件的索引的列表,然后逐行操作。 有一個更好的方法嗎?

你可以檢查np.select

m1 = df.col.str[0] == 'A'
m2 = df.col.str[0] == 'B'
df['NewCol'] = np.select([m1, m2], [df.col.str[:6], df.col.str[:8]], default = df.col)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM