我有一个熊猫数据框,其中有几列。 我想根据协议中的值从“信息”栏中获取前三个元素。
例如:如果协议是TCP,我希望信息中的前3个元素。
使用下面的代码,我可以将操作所需的列分开。但是我不知道如何使下一段代码适应于此。
chunk[['Protocol', 'Information']] = chunk[['Protocol', 'Information']]
编辑:
我希望更新这些值。不要将它们分开。
答案 0 :(得分:1)
您可以使用以下内容:
import pandas
data = data = {'Name':['first', 'second', 'third', 'fourth'],
'Age':[27, 27, 22, 32],
'Address':['New York', 'ABC', 'XYZ', 'Nowhere'],
'Qualification':['Msc', 'MA', 'MA', 'Phd']}
# Make a dataframe object
df = pandas.DataFrame(data)
# Your condition
# for example we want to get the rows with `Qualitication=='MA'
is_MA_qualified = df['Qualification'] == 'MA'
# Now to filter your data
MA_qualified = df[is_MA_qualified]
# You can use `head(n)` to get first three rows
first_three_MA_qualified = MA_qualified.head(3)
# And finally, to get any desired columns
first_three_MA_qualified[['Age','Address']]
更新: 要更新单元格,您可以遍历行,然后更改满足条件的单元格的值:
...
for index, row in df.iterrows():
if row['Age'] >= 18:
df.at[index, 'Qualification'] = 'Verified'
答案 1 :(得分:0)
我已经能够基于给定值更新值:
chunk.loc[chunk['Protocol'] == tcp, 'Information'] = 5
但是现在我只是将值更改为数字5。我宁愿使用lambda表达式或函数来获取前三个元素,而仅保留这些值。