df.loc[df['column_name'] == key_word, col_name]提取它的字符串值
时间: 2023-12-06 16:42:50 浏览: 75
在这个代码里,df是一个pandas DataFrame对象,'column_name'是DataFrame中的一列,key_word是你想要匹配的字符串值,col_name是你想要提取的字符串值所在的列名。
这个代码的作用是从DataFrame中选择'column_name'列中值等于key_word的行,并且返回这些行中col_name列的值。如果col_name是一个字符串类型的列,那么返回的就是这些字符串值。
相关问题
df.loc[df['column_name'] == key_word, col_name]如何取它的整形值
如果你想要将 DataFrame 中某个特定列(例如 `col_name`)中符合特定条件(例如 `'column_name' == key_word`)的行的值转换为整数,可以使用 `astype()` 方法。例如:
```
df.loc[df['column_name'] == key_word, col_name] = df.loc[df['column_name'] == key_word, col_name].astype(int)
```
这将把 `col_name` 列中符合 `'column_name' == key_word` 条件的行的值转换为整数。注意,在使用 `astype()` 方法时,如果该列中存在非数字字符串或缺失值,将会抛出异常。
for i, name in enumerate(table5_column_lst[1:]): table5.loc[i+1, name] = adhesive_df.loc[:, (adhesive_df.loc[0] == table5_column_lst[i]) & (adhesive_df.loc[1] == lst[i])] ValueError: Incompatible indexer with DataFrame
这个错误通常是因为尝试使用不兼容的索引器访问 Pandas DataFrame 数据而引起的。在这个代码片段中,`adhesive_df.loc[0]` 和 `adhesive_df.loc[1]` 似乎是在尝试访问 `adhesive_df` 的第 1 行和第 2 行。但是,这种索引方式可能不适用于 `adhesive_df`,因为这个 DataFrame 的索引可能是默认的整数索引,而不是 MultiIndex 对象。
如果您的目的只是从 `adhesive_df` 中选择特定的列,您可以尝试使用以下代码:
```
for i, name in enumerate(table5_column_lst[1:]):
table5.loc[i+1, name] = adhesive_df[name][(adhesive_df.iloc[0] == table5_column_lst[i]) & (adhesive_df.iloc[1] == lst[i])].values
```
在这个代码中,我们使用了 `iloc` 属性来访问第一行和第二行,而使用列名 `name` 来获取需要的列。然后,我们使用布尔索引来选择需要的行。最后,我们使用 `.values` 将结果转换为 NumPy 数组,以便可以将其添加到 `table5` DataFrame。
如果这个方法不能解决问题,您可以提供更多的上下文和代码示例,以便我能够更好地理解问题。
阅读全文