簡體   English   中英

Python數據框:如果列名稱包含在另一列的字符串行中,則為1,否則為0

[英]Python Data frame: If Column Name is contained in the String Row of Another Column Then 1 Otherwise 0

Column A          2C GAD D2 6F  ABCDE
2C 1B D2 6F ABC   1   0  1  1   0
2C 1248 Bulers    1   0  0  0   0

上面是我要創建的數據框。

第一行代表字段名稱。 我要采用的邏輯如下:如果列名在“ Column A”行中,則為1,否則為0

我搜尋了Google,尋找可以回答類似於我的問題的代碼,以便我可以對其進行測試並向后設計解決方案。 不幸的是,我找不到任何東西。

否則,我會發布一些我試圖解決此問題的代碼,但實際上我毫無頭緒。

您可以使用列表推導根據列和行創建期望數據:

In [39]: row =['2C 1B D2 6F ABC', '2C 1248 Bulers']

In [40]: columns=['2C', 'GAD', 'D2', '6F',  'ABCDE']

In [41]: df = pd.DataFrame([[int(k in r) for k in columns] for r in row], index = ['2C 1B D2 6F ABC','2C 1248 Bulers'], columns=['2C', 'GAD', 'D2', '6F',  'ABCDE'])

In [42]: df
Out[42]: 
                 2C  GAD  D2  6F  ABCDE
2C 1B D2 6F ABC   1    0   1   1      0
2C 1248 Bulers    1    0   0   0      0

如果您想使用純Pandas方法,則可以使用pd.Series()代替list來保留列和行,然后使用Series.applySeries.str.contains獲得所需的結果:

In [73]: data = columns.apply(row.str.contains).astype(int).transpose()

In [74]: df = pd.DataFrame(data.values, index = ['2C 1B D2 6F ABC','2C 1248 Bulers'], columns=['2C', 'GAD', 'D2', '6F',  'ABCDE'])

In [75]: df
Out[75]: 
                 2C  GAD  D2  6F  ABCDE
2C 1B D2 6F ABC   1    0   1   1      0
2C 1248 Bulers    1    0   0   0      0

暫無
暫無

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

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