我有一个条件性声明,我正在尝试在Anaconda的熊猫中锻炼。我已经将numpy安装为np。
我需要创建一个新的“文本”字段,如果现有的“截断的”字段为“假”,请在现有的“文本”字段中使用字符串。否则,(或者如果“截断”字段的值为“ True”,请在现有的“ extended_tweet.full_text”字段中使用字符串。
尝试按照此页面上的说明进行操作,但这不是直接的并行操作,因为我的“选择”是其他字段的值,而不是给定的字符串。 Pandas conditional creation of a series/dataframe column
这是我的代码:
conditions = [
(df['truncated'] == 'False'),
(df['truncated'] == 'True')]
choices = ['text'], ['extended_tweet.full_text']
df['Text'] = np.select(conditions, choices, default='null')
运行该命令后,所有“文本”值均为“空”
我已经尝试了'choices'选项代码的变体,并且认为问题是我在选择行中指示选项的方式(我在下面的示例代码使用给定的'string'值) 。但是我无法找出正确的方法来表明我想要新的“文本”字段中使用的声明字段中的字符串值。
任何帮助都将不胜感激。
第2部分:对下面的输入的响应:
谢谢。我对最少的可复制示例并不熟悉。
这是我想出的:
df5 = pd.DataFrame([["True", "Hello", "fine"], ["False", 'Howdy', 'good'], ["False", "Hi", "bien"]], columns=['truncated', 'text', 'extended_tweet.full_text'])
print(df5)
truncated text extended_tweet.full_text
0 True Hello fine
1 False Howdy good
2 False Hi bien
conditions = [
(df5['truncated'] == 'False'),
(df5['truncated'] == 'True')]
choices = ['text'], ['extended_tweet.full_text']
df5['Text'] = np.select(conditions, choices, default='null')
df5['Text']
0 extended_tweet.full_text
1 text
2 text
Name: Text, dtype: object
但是,它返回的是'text'和'extended_tweet.full_test'字段的字符串,而不是这些列中的值。
我尝试了两个建议,但由于我处于编辑模式,所以现在看不到。但是这是我的结果:
我将“选择”行更改为:
choices = ['text', 'extended_tweet.full_text']
它返回了此错误消息,并且每个“文本”值均为“空”:
/anaconda3/lib/python3.7/site-packages/pandas/core/ops.py:1649: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
result = method(y)
我也尝试过此版本:
conditions = [~df['truncated'],df['truncated']]
choices = ['text'], ['extended_tweet.full_text']
df['Text'] = np.select(conditions, choices, default='null')
但是像我的最小示例一样,它生成了'text'和'extended.tweet_full.text'字符串,而不是这些字段中的值。